你們有沒有發現?這些定義的值去哪里了??
首先附上老師用的這個圖,這些這樣子定義都是很清晰的,然后我看到就是老師在定義foo的屬性值的時候就是用foo.prototype.z;來定義,很明顯,obj的原型是指向foo的prototype的,所以obj.z當然也會有值。但是!?。。?!我要是在前面定義這樣一句,foo.g=5的話,obj。g是沒有值的。。。。好吧,那我理解為因為這樣子定義的g值不是在prototype里面,所以這個obj就不會有值,但是這個值是在哪里呢??
哪位知道的可以一起討論一下嗎
結果是這樣的。
2016-10-14
拋開你截圖的代碼(倒數第二行并不能得到你想要的原型鏈...),
?按你的文字描述foo.g=5的g是foo的自有屬性,也就是
foo.hasOwnProperty("g")===true;foo.hasOwnProperty("z")===false;
使用 var obj = new foo() 這種繼承方式會把foo.prototype上的屬性直接掛到obj.__proto__上,
這種方式和Object.create([Object])繼承原理是不同的,老師后面的課程應該會有介紹。