JavaScript 原型鏈是一種實現對象間繼承的機制。每個 JavaScript 對象都有一個指向其原型的內部鏈接。當試圖訪問一個對象的屬性時,如果該對象內部不存在這個屬性,那么 JavaScript 引擎會沿著原型鏈向上查找,直到找到該屬性或到達原型鏈的頂端(null
)。
以下是一些與 JavaScript 原型鏈相關的方法:
Object.prototype
: 這是所有 JavaScript 對象的原型。它包含一些通用的方法和屬性,如 toString()
和 hasOwnProperty()
。
Object.create(proto)
: 使用指定的原型對象創(chuàng)建一個新對象。新創(chuàng)建的對象將具有指定原型的 [[Prototype]]
屬性(即原型鏈中的下一個對象)。
Object.getPrototypeOf(obj)
: 返回指定對象的原型(即原型鏈中的下一個對象)。
Object.is(value1, value2)
: 判斷兩個值是否相同。這個方法可以正確處理循環(huán)引用和特殊值(如 null
和 undefined
)。
Object.setPrototypeOf(obj, prototype)
: 將指定對象的原型設置為指定的原型對象。這將改變對象的原型鏈。
Object.isExtensible(obj)
: 判斷一個對象是否可以被擴展(即添加新的屬性)。
Object.preventExtensions(obj)
: 阻止新屬性的添加到對象上。這意味著對象的原型鏈將不再被擴展。
Object.seal(obj)
: 阻止新屬性的添加,并阻止現有屬性的刪除。這意味著對象的原型鏈將不再被擴展,且現有屬性將保持不變。
Object.freeze(obj)
: 阻止新屬性的添加,阻止現有屬性的刪除和修改。這意味著對象的原型鏈將不再被擴展,且現有屬性將保持不變。
Object.assign(target, ...sources)
: 將一個或多個源對象的可枚舉屬性復制到目標對象。這將創(chuàng)建一個新的對象,而不是修改現有的對象。
這些方法可以幫助您更好地理解和操作 JavaScript 原型鏈。