一般来说,对象的原型会在通过构造器或 Object.create() 方法创建该对象时被指定,对象的原型在初始化完成后会保持不变。ES6 添加 Object.setPrototypeOf() 方法,此方法允许你修改任意指 定对象的原型。它接受两个参数:需要被修改原型的对象,以及将会成为前者原型的对象。
let person = {
getGreeting() {
return "Hello";
}
};
let dog = {
getGreeting() {
return "Wang";
}
};
// 原型为 person
let friend = Object.create(person);
console.log(friend.getGreeting()); // "Hello"
console.log(Object.getPrototypeOf(friend) === person); // true
// 将原型设置为 dog
Object.setPrototypeOf(friend, dog);
console.log(friend.getGreeting()); // "Wang"
console.log(Object.getPrototypeOf(friend) === dog); // true