我相信最好的方法是:
var a = {a:1, b:2}
var b = Object.create(a);
b.a = 1
var c = Object.create(b);
c.c = 3;
var d = Object.create(c);
d.protoTree(); //returns: [c, b, a]
c.protoTree(); //returns: [b, a];
b.protoTree(); //returns: [a];
但這可能嗎?假設您只知道 D 物件,最好的方法是什么?
uj5u.com熱心網友回復:
您可以將isPrototypeOf()用于此用例
uj5u.com熱心網友回復:
使用Object.prototype.isPrototypeOf()是執行此操作的方法
function Person() {}
function Child() {}
Child.prototype = Object.create(Person.prototype);
const child = new Child();
console.log(Person.prototype.isPrototypeOf(child));
console.log(Child.prototype.isPrototypeOf(child));
更多關于Object.prototype.isPrototypeOf() 這里
uj5u.com熱心網友回復:
如果將其作為成員方法并不好,但作為獨立(遞回)函式很容易實作:
function protoTree(obj){
if(obj === null) return []
return [obj, ...protoTree(Object.getPrototypeOf(obj))]
}
它的作業原理是這樣的(請注意,它還回傳Object.prototype,a繼承自 .
var a = {a:1, b:2}
var b = Object.create(a);
b.a = 1
var c = Object.create(b);
c.c = 3;
var d = Object.create(c);
protoTree(d); //returns: [c, b, a, Object.prototype]
protoTree(c); //returns: [b, a, Object.prototype]
protoTree(b); //returns: [a, Object.prototype]
protoTree(a); //returns: [Object.prototype]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/405759.html
標籤:
