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


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


Object.setPrototypeOf() 方法將指定對象的原型(即內部 [[Prototype]] 屬性)設置為另一個對象或 null。所有 JavaScript 對象都從原型繼承屬性和方法。它通常被認為是設置對象原型的正確方法。

用法:

Object.setPrototypeOf(obj, prototype)

參數:

obj:它是要設置其原型的對象。

Prototype:它是對象的新原型(一個對象或空值)。

返回值:

此方法返回指定的對象。

瀏覽器支持:

Chrome 34
Edge Yes
Firefox 31
Opera Yes

例子1

let raay = {
  drive() {
    return 'Add raay';
  }
}
let naty  = {
  net() {
    return 'use net';
  }
}
// Set raay's __proto__ to naty's  __proto__'s  __proto__
Object.setPrototypeOf(naty, raay);

console.dir(naty); //prints the naty object
console.log(naty.net()); // use net
console.log(naty.drive()); // Add raay

輸出:

 [object Object] {
  drive:drive() {
    return 'Add raay';
  },
  net:net() {
    return 'use net';
  }
}
"use net"
"Add raay"

例子2

var Animal = {
   speak() {
     console.log(this.name + ' makes');
   }
};

class Dog {
   constructor(name) {
   this.name = name;
  }
}

Object.setPrototypeOf(Dog.prototype, Animal); 
// If you do not do this you will get a TypeError when you invoke speak
var d = new Dog('people');
d.speak();

輸出:

"people makes"

例子3

let toyota = {
  drive() {
    return 'driving toyota';
 }
}
let camry = {
  wifi() {
    return 'carry';
  }
}
// Set toyota's __proto__ to camry's  __proto__'s  __proto__
Object.setPrototypeOf(camry, toyota);
console.dir(camry); //prints the camry object
console.log(camry.wifi()); // carry

輸出:

[object Object] {
 drive:drive() {
    return 'driving toyota';
 },
  wifi:wifi() {
    return 'carry';
  }
}
"carry"






相關用法


注:本文由純淨天空篩選整理自 JavaScript Object.setPrototypeOf() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。