📅  最后修改于: 2023-12-03 15:16:08.218000             🧑  作者: Mango
在 JavaScript 中,对象可以设置一个原型对象(即指定一个对象作为自己的原型),这可以通过 Object.setPrototypeOf()
方法来实现。同时,Reflect.setPrototypeOf()
方法也提供了类似的功能,用于设置一个对象的原型对象。
Reflect.setPrototypeOf()
方法的语法如下:
Reflect.setPrototypeOf(target, prototype)
其中,target
参数代表需要修改的目标对象,prototype
参数表示修改后的原型对象。
Reflect.setPrototypeOf()
方法会返回一个布尔值,代表是否修改成功。
下面示例为一个“人”类,具有“姓名”和“年龄”属性,同时被继承的“学生”类也具有“学号”属性。
class Person{
constructor(name,age){
this.name = name;
this.age = age;
}
}
class Student extends Person{
constructor(name,age,id){
super(name,age);
this.id = id;
}
}
const stu = new Student('小明',18,10001);
console.log(stu); // Student { name: '小明', age: 18, id: 10001 }
const person = new Person('李四',20);
console.log(person); // Person { name: '李四', age: 20 }
Object.setPrototypeOf(stu,person); // 将学生的原型设置为人
console.log(stu); // Student { name: '小明', age: 18, id: 10001 }
console.log(stu instanceof Person); // true
console.log(stu instanceof Student); // true
__proto__
是一个非标准的属性,因此不推荐使用,而是应该使用 Object.getPrototypeOf()
和 Object.setPrototypeOf()
方法进行操作。