gpt4 book ai didi

javascript - 列出 Javascript 对象的所有原型(prototype)属性

转载 作者:可可西里 更新时间:2023-11-01 01:20:56 28 4
gpt4 key购买 nike

有没有其他方法可以查找 javascript 对象的原型(prototype)属性。假设我有这样的经历。

function proton() {
this.property1 = undefined;
this.property2 = undefined;
};

proton.prototype = {

sample1 : function() {
return 'something';
},

sample2 : function() {
return 'something';
}

};

var my_object = new proton();

console.log(Object.keys(my_object));

返回 ["property1", "property2"]

console.log(Object.getOwnPropertyNames(my_object));

返回 ["property1", "property2"]

但是我要打印的是对象my_object的原型(prototype)属性。

['样本 1', '样本 2']

为了让我看到该对象的原型(prototype)属性,我需要使用 console.log(object) 并从开发人员工具中查找该对象的属性。

但由于我使用的是第三方库,例如 phaser.js、react.js、create.js所以我不知道从这个库中创建的对象的原型(prototype)属性列表。

有没有Object的原型(prototype)函数可以列出javascript对象的所有prototpye属性?

最佳答案

不是原型(prototype)方法,但你可以使用Object.getPrototypeOf遍历原型(prototype)链,然后获取每个对象的属性名称。

function logAllProperties(obj) {
if (obj == null) return; // recursive approach
console.log(Object.getOwnPropertyNames(obj));
logAllProperties(Object.getPrototypeOf(obj));
}
logAllProperties(my_object);

使用它,您还可以编写一个函数,返回一个包含所有属性名称的数组:

function props(obj) {
var p = [];
for (; obj != null; obj = Object.getPrototypeOf(obj)) {
var op = Object.getOwnPropertyNames(obj);
for (var i=0; i<op.length; i++)
if (p.indexOf(op[i]) == -1)
p.push(op[i]);
}
return p;
}
console.log(props(my_object)); // ["property1", "property2", "sample1", "sample2", "constructor", "toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable"

关于javascript - 列出 Javascript 对象的所有原型(prototype)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30158515/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com