积跬 2012-03-12 15:30
浏览 183
已采纳

对javascript中prototype的一些疑惑

function Na(name){this.name=name}
function Se(){this.sex="male"}
A.prototype=new Se;
var A=new Na("li");
var B=new Se;
alert(A.sex);

为什么A.prototype=new Se;这条语句只能放在var B=new Se的前面,而不能放在后面呢???还有为什么不可以用A.prototype=Se;非得加一个new,不能直接用类名呢?[size=large][/size]

  • 写回答

3条回答 默认 最新

  • suziwen 2012-03-12 22:26
    关注

    new Se 等价于new Se();表示创建一个对像
    Se 表示一个函数的定义
    Se(); 表示执行一个函数

    你可以这样试着写

    function Se(){alert(this)}
    当执行new Se()和执行Se()时就可以看出一些差别

    Na.prototype=new Se 表示Na 继承new Se创建的对像
    Na.prototype=Se 表示Na 继承Se函数
    Na.prototype=Se() 表示Na继承Se函数执行的结果,在这里因为Se函数的返回值是void所以就是undefined。如果 你把Se定义成这样
    function Se(){return {a:'xxxx'}}
    那吗Na.prototype=Se 表示Na继承{a:'xxxx'}

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化