JavaScript 原型链是一种实现对象间继承的机制。每个 JavaScript 对象都有一个指向其原型的内部链接。当试图访问一个对象的属性时,如果该对象内部不存在这个属性,那么 JavaScript 引擎会沿着原型链向上查找,直到找到该属性或到达原型链的顶端(null
)。
以下是一些与 JavaScript 原型链相关的方法:
Object.prototype
: 这是所有 JavaScript 对象的原型。它包含一些通用的方法和属性,如 toString()
和 hasOwnProperty()
。
Object.create(proto)
: 使用指定的原型对象创建一个新对象。新创建的对象将具有指定原型的 [[Prototype]]
属性(即原型链中的下一个对象)。
Object.getPrototypeOf(obj)
: 返回指定对象的原型(即原型链中的下一个对象)。
Object.is(value1, value2)
: 判断两个值是否相同。这个方法可以正确处理循环引用和特殊值(如 null
和 undefined
)。
Object.setPrototypeOf(obj, prototype)
: 将指定对象的原型设置为指定的原型对象。这将改变对象的原型链。
Object.isExtensible(obj)
: 判断一个对象是否可以被扩展(即添加新的属性)。
Object.preventExtensions(obj)
: 阻止新属性的添加到对象上。这意味着对象的原型链将不再被扩展。
Object.seal(obj)
: 阻止新属性的添加,并阻止现有属性的删除。这意味着对象的原型链将不再被扩展,且现有属性将保持不变。
Object.freeze(obj)
: 阻止新属性的添加,阻止现有属性的删除和修改。这意味着对象的原型链将不再被扩展,且现有属性将保持不变。
Object.assign(target, ...sources)
: 将一个或多个源对象的可枚举属性复制到目标对象。这将创建一个新的对象,而不是修改现有的对象。
这些方法可以帮助您更好地理解和操作 JavaScript 原型链。