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

你们有没有发现?这些定义的值去哪里了??

http://img1.sycdn.imooc.com//57ff1eb600013fc808320510.jpg

首先附上老师用的这个图,这些这样子定义都是很清晰的,然后我看到就是老师在定义foo的属性值的时候就是用foo.prototype.z;来定义,很明显,obj的原型是指向foo的prototype的,所以obj.z当然也会有值。但是!!!!!我要是在前面定义这样一句,foo.g=5的话,obj。g是没有值的。。。。好吧,那我理解为因为这样子定义的g值不是在prototype里面,所以这个obj就不会有值,但是这个值是在哪里呢??

哪位知道的可以一起讨论一下吗

http://img1.sycdn.imooc.com//57ff1fbc000119af03960204.jpg


结果是这样的。http://img1.sycdn.imooc.com//57ff200a00017f0203450088.jpg

正在回答

1 回答

抛开你截图的代码(倒数第二行并不能得到你想要的原型链...),

 按你的文字描述foo.g=5的g是foo的自有属性,也就是

foo.hasOwnProperty("g")===true;foo.hasOwnProperty("z")===false;

使用 var obj = new foo() 这种继承方式会把foo.prototype上的属性直接挂到obj.__proto__上,

这种方式和Object.create([Object])继承原理是不同的,老师后面的课程应该会有介绍。


1 回复 有任何疑惑可以回复我~
#1

深夏之叶 提问者

非常感谢!
2016-10-14 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

你们有没有发现?这些定义的值去哪里了??

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信