Skip to content

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

Published: at 06:20 AM (1 min read)

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

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

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

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

[javascript] 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]

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

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

參考資料:

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