亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

你們有沒有發現?這些定義的值去哪里了??

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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號