📜  JavaScript | Reflect.setPrototypeOf() 方法(1)

📅  最后修改于: 2023-12-03 15:16:08.218000             🧑  作者: Mango

JavaScript | Reflect.setPrototypeOf() 方法

介绍

在 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
注意事项
  • 不能将原型修改为非对象的值,否则会抛出类型错误(TypeError)。
  • 由于在 ES6 标准中已经明确指出 __proto__ 是一个非标准的属性,因此不推荐使用,而是应该使用 Object.getPrototypeOf()Object.setPrototypeOf() 方法进行操作。