JavaScript 对象(Objects) 方法

Object.setPrototypeOf()方法将指定对象的原型(即内部 [[Prototype]] 属性)设置为另一个对象或 null。

所有 JavaScript 对象都从原型继承属性和方法。它通常被认为是设置对象原型的正确方法。

语法:

Object.setPrototypeOf(obj, prototype)

参数:

obj:要设置原型的对象。

prototype:它是对象的新原型(一个对象或null)。

返回值:

此方法返回指定的对象。

浏览器支持:

chrome34
edge是的
firefox31
opera是的

示例1

<script>
let raay = {
  drive() {
    return 'Add raay';
  }
}
let naty  = {
  net() {
    return 'use net';
  }
}
// 设置
Object.setPrototypeOf(naty, raay);

console.dir(naty); //打印naty 对象
console.log(naty.net()); // 调用 net 方法
console.log(naty.drive()); // Add raay
</script>

输出:

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

示例 2

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

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

Object.setPrototypeOf(Dog.prototype, Animal); 
// 如果你不这样做,当你调用speak时,你会得到一个TypeError
var d = new Dog('people');
d.speak();
</script>

输出:

"people makes"

示例3

<script>
let toyota = {
  drive() {
    return 'driving toyota';
 }
}
let camry = {
  wifi() {
    return 'carry';
  }
}
// 设置
Object.setPrototypeOf(camry, toyota);
console.dir(camry); //输出 camry 对象
console.log(camry.wifi()); // carry
</script> 

输出:

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