我有一个对象,我可以在其中获得所有功能。但我想用 proto 添加功能然后获取所有功能。我可以做什么?
var myObj = {
func1:function(){}
};
var myPrototype = {
func2: function(){
}
};
myObj.__proto__ = myPrototype;
alert(Object.getOwnPropertyNames(myObj));
结果是
func1
但我想要所有的功能
func1,func2
我该怎么做??????
答案 0 :(得分:1)
正如方法名称所示,Object.getOwnPropertyNames
只会为您提供自己的属性名称,而不是继承的属性名称。
为了获得这些,你也需要在原型上应用它 - 事实上,在所有原型上。顺便说一句,请避免使用__proto__
属性。
var myPrototype = {
func2: function() {}
};
var myObj = Object.create(myPrototype);
myObj.func1 = function(){};
for (var o=myObj; o!=null; o=Object.getPrototypeOf(o))
alert(Object.getOwnPropertyNames(o));
答案 1 :(得分:0)
TNX。 我是通过这个功能来做的
function getAllMethods(obj) {
var result = [];
for (var id in obj) {
try {
if (typeof(obj[id]) == "function") {
result.push(id + ": " + obj[id].toString());
}
}
catch (err) {
}
}
return result;
}