[javascript] 原型(prototype)和原型鍊(prototype chain)

在 javascript 中每個物件都有一個原型(prototype)屬性,

當今天嘗試存取此物件的屬性或方法時,預設會先找此物件是否有此方法或屬性,若找不到,則會至原型(prototype)去找。

看程式碼比較快理解,例如:

PS. 重要!! 平常請不要寫出這樣的程式碼,會使效能低落!

var person={
    "firstName": "default",
    "lastName": "default"
};
var camel={
    "firstName": "camel"
};
console.log(camel.lastName);
// undefined
camel.__proto__.lastName="chang";
console.log(camel.lastName);
// chang
camel.__proto__.firstName="test";
console.log(camel.firstName);
// camel

從上面這段程式碼,我們可以發現 javascript 在目前物件找不到屬性或方法時,會至原型(prototype)去找。

然而當我們的物件的深度越深時,就會檢查更多的物件原型,這條尋找的鍊就稱為原型鍊(prototype chain)。

 

參考資料:

https://pjchender.blogspot.tw/2016/06/javascriptprototypeprototype.html

Leave a Reply

Your email address will not be published. Required fields are marked *