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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。