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.seal()用法及代碼示例
- JavaScript Object.assign()用法及代碼示例
- JavaScript Object.getOwnPropertyDescriptors()用法及代碼示例
- JavaScript Object.getOwnPropertySymbols()用法及代碼示例
- JavaScript Object.defineProperties()用法及代碼示例
- JavaScript Object.freeze()用法及代碼示例
- JavaScript Object.preventExtensions()用法及代碼示例
- JavaScript Object.getOwnPropertyDescriptor()用法及代碼示例
- JavaScript Object.getOwnPropertyNames()用法及代碼示例
- JavaScript Object.getPrototypeOf()用法及代碼示例
- JavaScript Object.defineProperty()用法及代碼示例
- JavaScript Object.is()用法及代碼示例
- JavaScript Object.values()用法及代碼示例
- JavaScript Object.create()用法及代碼示例
- JavaScript Object.entries()用法及代碼示例
- JavaScript Uint8Array.of()用法及代碼示例
- JavaScript BigInt.prototype.toString()用法及代碼示例
- JavaScript DataView.getInt16()用法及代碼示例
- JavaScript Symbol.keyFor()用法及代碼示例
- JavaScript handler.has()用法及代碼示例
注:本文由純淨天空篩選整理自 JavaScript Object.setPrototypeOf() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。