Reflect.setPrototypeOf()
JavaScript Reflect.setPrototypeOf()方法
静态的
Reflect.setPrototypeOf()方法用于将指定对象的原型设置为另一个对象。第一个参数是对象引用,第二个参数可以为null或对象。此方法与Object.setPrototypeOf()方法相同。
语法:
Reflect.setPrototypeOf(obj, prototype)
参数:
obj:它是设置原型的目标对象。
prototype:这是对象的新原型。
返回值:
此方法返回一个布尔值,该布尔值指示是否已成功设置原型。
例外:
如果目标不是对象,则发生TypeError
浏览器支持:
浏览器 |
版本 |
Chrome |
49 |
Edge |
12 |
Firefox |
42 |
Opera |
36 |
示例1
const object = {};
console.log(Reflect.setPrototypeOf(Object.freeze(object), null));
输出:
示例2
var Animal = {
speak() {
console.log(this.name + ' makes a noise.');
}
};
class g {
constructor(name) {
this.name = name;
}
}
Reflect.setPrototypeOf(g.prototype, Animal);
// If you do not do this you will get a TypeError when you invoke speak
var d = new g('Mitzie');
d.speak();
输出:
示例3
let toyota = {
drive() {
return 'value';
}
}
let obj = {
wifi() {
return 'answer';
}
}
Object.setPrototypeOf(obj, toyota);
console.dir(obj);
document.write(obj.wifi());
document.writeln("<br/>");
document.writeln(obj.drive());
输出: