积跬 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条)

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集