當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。