在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 構造器借用的繼承問題

構造器借用的繼承問題

今天在讀《javascript 面向對象編程指南》第6章 繼承的時候,6.13節(jié) 構造器借用中有段代碼為:

function Shape(id){
    this.id = id;
}

function Triangle(){
    Shape.apply(this,arguments);
}

Triangle.prototype = new Shape(100);

var t = new Triangle(200);

書中所說,對象中有一個自身屬性id,但它并非來自原型鏈中,然后執(zhí)行了一系列操作:

> t.__proto__.id  // 100

> delete t.id

> t.id // 100

為什么這個id不是來自于原型鏈,我用 t.hasOwnProperty('id')發(fā)現(xiàn)結果為false那就說明這個id不是本身的,那既不是來自于原型鏈,也不是來自自身,那這個id來自于哪里,還是說這本書這里有錯誤?

回答
編輯回答
未命名

hasOwnProperty只是查找當前對象下的第一層屬性。

// eg.
var obj = { 
    a: { b: '123' }
 }

obj.hasOwnProperty('a')  // => true

obj.hasOwnProperty('b')  // => false
2017年9月20日 05:24
編輯回答
遲月

t自己有1個id=200,t的__proto__也就是Triangle.prototype有一個id=100。
執(zhí)行delete t.id是刪了t自己的id,再訪問t.id的時候,其實是訪問Triangle.prototype.id

2018年3月31日 14:24
編輯回答
敢試

是不是你理解錯了,你或許可以把上下文截圖出來.

2018年9月23日 16:31