从javascript中的对象获取所有proto函数

时间:2014-09-09 20:13:18

标签: javascript object prototype

我有一个对象,我可以在其中获得所有功能。但我想用 proto 添加功能然后获取所有功能。我可以做什么?

var myObj = {
    func1:function(){}
};
var myPrototype = {
    func2: function(){          
    }
};
myObj.__proto__ = myPrototype;
alert(Object.getOwnPropertyNames(myObj));

结果是

func1

但我想要所有的功能

func1,func2

我该怎么做??????

2 个答案:

答案 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;
}