您好,匿名用户
随意问技术百科期待您的加入

关于js prototype的问题

0 投票

在Mozilla/Konqueror的浏览器中,对象的__proto__属性指向creator function的prototype属性

那下面这段代码,如何解释

function foo(){}

bar = new foo();

foo.prototype = new Object();

foo.prototype.constructor现在是Object()

照里说bar.__proto__.constructor也应该是Object()

但是实际上,我测试下来,bar.__proto__.constructor却仍旧是foo

请帮我指出问题出在哪?Thanks

用户头像 提问 2014年 3月19日 @ Nidalee 上等兵 (346 威望)
分享到:

1个回答

0 投票

严格来说,__proto__指向的不是prototype,而是指向prototype所指向的那个对象。

你创建了一个函数对象foo。所以,foo.prototype指向一个Object对象:

1: function foo(){}

然后,以foo对象为原型创建了一个bar对象。所以,bar.__proto__指向foo.prototype所指向的这个对象,也就是指向同一个Object对象:

2: bar = new foo();

最后,让foo.prototype指向一个新的Object对象。注意,此时,bar.__proto__并没有人去修改它,仍然指向原来的Object对象:

3: foo.prototype = new Object();
我是看图说话分割线

执行完bar = new foo();后,是这样:

foo.prototype   bar.__proto__
        \            /
         \          /
          \        /
           \      /
           Object

而不是这样:

bar.___proto___
     |
     |
foo.prototype
     |
     |
  Object
用户头像 回复 2014年 3月19日 @ Aquarius 上等兵 (283 威望)
提一个问题:

相关问题

0 投票
1 回复 34 阅读
0 投票
1 回复 24 阅读
0 投票
1 回复 32 阅读
0 投票
1 回复 27 阅读
用户头像 提问 2012年 12月1日 @ Gemini 上等兵 (319 威望)
0 投票
1 回复 57 阅读
用户头像 提问 2012年 12月1日 @ Malphite 上等兵 (306 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...