Skip to content
On this page

原型鏈

原型鏈的概念:

在 JS 中,每個物件都有一個隱藏屬性 [[Prototype]],這個屬性指向另一個物件,稱為「原型(Prototype)」。 當在存取一個物件的方法或屬性時,JS 會先在物件中尋找有沒有這個方法或屬性,如果沒有,就會沿著原型鏈再往上一層找,直到終點的 null 為止。

舉例:

const arr = [1,2,3]
const newArr = Object.assign([],arr)

// arr 的原型鏈會先指向 Array.prototype,
// 這個方法在 Array.prototype 找不到時,就會繼續往 Object.prototype 尋找。
// 因此雖然是陣列,但卻可以使用物件的方法。

補充:由於 [[Prototype]] 是隱藏屬性,所以無法直接取得,需要透過 __proto__Object.getPrototypeOf(obj) 取得。

舉例:

const arr = [];
console.log(arr.__proto__); // 會得到 Array.prototype
console.log(arr.__proto__.__proto__); // 會得到 Object.prototype
console.log(arr.__proto__.__proto__.__proto__); // 會得到 null

// arr  →  Array.prototype  →  Object.prototype  →  null

This site uses open-source libraries.