为了账号安全,请及时绑定邮箱和手机立即绑定

关于js prototype的问题

关于js prototype的问题

幕布斯6054654 2019-04-07 09:37:46
在Mozilla/Konqueror的浏览器中,对象的__proto__属性指向creatorfunction的prototype属性那下面这段代码,如何解释functionfoo(){}bar=newfoo();foo.prototype=newObject();foo.prototype.constructor现在是Object()照里说bar.__proto__.constructor也应该是Object()但是实际上,我测试下来,bar.__proto__.constructor却仍旧是foo请帮我指出问题出在哪?Thanks
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

严格来说,__proto__指向的不是prototype,而是指向prototype所指向的那个对象。你创建了一个函数对象foo。所以,foo.prototype指向一个Object对象:1:functionfoo(){}然后,以foo对象为原型创建了一个bar对象。所以,bar.__proto__指向foo.prototype所指向的这个对象,也就是指向同一个Object对象:2:bar=newfoo();最后,让foo.prototype指向一个新的Object对象。注意,此时,bar.__proto__并没有人去修改它,仍然指向原来的Object对象:3:foo.prototype=newObject();我是看图说话分割线执行完bar=newfoo();后,是这样:foo.prototypebar.__proto__
\/
\/
\/
\/
Object而不是这样:bar.___proto___
|
|
foo.prototype
|
|
Object
                            
查看完整回答
反对 回复 2019-04-07
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

没人回答,我杜撰一个吧:
bar.__proto__引用的是foo{},并不是引用foo.prototype,
虽然改了foo.prototype,但是并不影响bar._proto__引用foo{}
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 355 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信