深夏之叶
2016-10-13 13:48
首先附上老师用的这个图,这些这样子定义都是很清晰的,然后我看到就是老师在定义foo的属性值的时候就是用foo.prototype.z;来定义,很明显,obj的原型是指向foo的prototype的,所以obj.z当然也会有值。但是!!!!!我要是在前面定义这样一句,foo.g=5的话,obj。g是没有值的。。。。好吧,那我理解为因为这样子定义的g值不是在prototype里面,所以这个obj就不会有值,但是这个值是在哪里呢??
哪位知道的可以一起讨论一下吗
结果是这样的。
抛开你截图的代码(倒数第二行并不能得到你想要的原型链...),
按你的文字描述foo.g=5的g是foo的自有属性,也就是
foo.hasOwnProperty("g")===true;foo.hasOwnProperty("z")===false;
使用 var obj = new foo() 这种继承方式会把foo.prototype上的属性直接挂到obj.__proto__上,
这种方式和Object.create([Object])继承原理是不同的,老师后面的课程应该会有介绍。
JavaScript深入浅出
281112 学习 · 1020 问题
相似问题