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

get all proto functions from object in javascript

本文关键字:proto 函数 获取 对象 javascript      更新时间:2023-09-26

我有一个对象,我可以获取其中的所有函数。但我想添加带有proto的函数,然后获取所有函数。我该怎么办?

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

结果是

func1

但是我想要的所有功能

func1,func2

我该怎么做??????

正如方法名所说,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));

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