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

来源:4-2 [JavaScript]创建对象、原型链

深夏之叶

2016-10-13 13:48

http://img.mukewang.com/57ff1eb600013fc808320510.jpg

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

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

http://img.mukewang.com/57ff1fbc000119af03960204.jpg


结果是这样的。http://img.mukewang.com/57ff200a00017f0203450088.jpg

写回答 关注

1回答

  • 时间是个魔鬼
    2016-10-14 00:09:35
    已采纳

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

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

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

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

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


    深夏之叶

    非常感谢!

    2016-10-14 09:19:55

    共 1 条回复 >

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281112 学习 · 1020 问题

查看课程

相似问题