推荐答案
// www.javascriptcn.com code example
// 使用 Object.setPrototypeOf 设置对象的原型
const parent = { name: 'Parent' };
const child = { age: 10 };
Object.setPrototypeOf(child, parent);
console.log(child.name); // 输出: Parent
// 使用 Object.getPrototypeOf 获取对象的原型
const prototype = Object.getPrototypeOf(child);
console.log(prototype === parent); // 输出: true本题详细解读
Object.setPrototypeOf 方法
Object.setPrototypeOf 方法用于设置一个对象的原型(即内部 [[Prototype]] 属性)。它接受两个参数:
- obj: 要设置原型的对象。
- prototype: 该对象的新原型(可以是一个对象或
null)。
Object.setPrototypeOf(obj, prototype);
- 该方法会直接修改对象的原型链,因此在使用时应谨慎,因为它可能会影响性能。
- 如果
prototype参数不是一个对象或null,则会抛出TypeError。
Object.getPrototypeOf 方法
Object.getPrototypeOf 方法用于获取指定对象的原型。它接受一个参数:
- obj: 要获取原型的对象。
Object.getPrototypeOf(obj);
- 该方法返回指定对象的原型(即内部
[[Prototype]]属性的值)。 - 如果
obj参数不是一个对象,则会抛出TypeError。
示例解析
在推荐答案的示例中:
- 首先定义了一个
parent对象和一个child对象。 - 使用
Object.setPrototypeOf方法将child对象的原型设置为parent对象。 - 通过
child.name访问parent对象的name属性,输出'Parent'。 - 使用
Object.getPrototypeOf方法获取child对象的原型,并验证其是否与parent对象相等,输出true。
这两个方法在处理对象原型时非常有用,尤其是在需要动态修改或检查对象原型链的情况下。