当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JavaScript Object.setPrototypeOf()用法及代码示例


JavaScript Object.setPrototypeOf() 方法将指定对象的原型设置为另一个对象或 null。

用法:

Object.setPrototypeOf(obj, prototype)

setPrototypeOf() 方法是静态方法,使用Object 类名调用。

setPrototypeOf()参数

setPrototypeOf() 方法包含:

  • obj - 要设置其原型的对象。
  • prototype - 对象的新原型(对象或 null)。

setPrototypeOf() 的返回值

  • 返回指定的对象。

注意:改变[[Prototype]]目前,在每个浏览器和 JavaScript 引擎中,对象的操作都是非常缓慢的操作。

示例 1:使用 Object.setPrototypeOf()

let Animal = {
  makeSound() {
    console.log(`${this.name}, ${this.sound}!`);
  },
};
// defining new Dog object
function Dog(name) {
  this.name = name;
  this.sound = "bark";
  // setting prototype to Animal
  Object.setPrototypeOf(this, Animal);
}

dog1 = new Dog("Marcus");

dog1.makeSound(); // Marcus, bark!

输出

Marcus, bark!

示例 2:使用 Object.setPrototypeOf()

let Animal = {
  makeSound() {
    console.log(`${this.name}, ${this.sound}!`);
  },
};
// defining object
class Dog {
  constructor(name, age) {
    this.name = name;
    this.sound = "bark";
  }
  introduce() {
    console.log(`I'm ${this.name}. I am ${this.age} years old.`);
  }
}
// Here Dog.prototype is passed as it is an object, while Dog is not an object
Object.setPrototypeOf(Dog.prototype, Animal);

dog1 = new Dog("Marcus", 3);

console.log(dog1);

dog1.makeSound(); // Marcus, bark!

输出

 name: "Marcus"
 sound: "bark"
 __proto__:
     constructor: class Dog
     introduce: ƒ introduce()
      __proto__:
         makeSound: ƒ makeSound()
         __proto__: Object

Marcus, bark!

相关用法


注:本文由纯净天空筛选整理自 Javascript Object.setPrototypeOf()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。