如何列出JavaScript对象的函数/方法?(是否可能?)

10

这个问题的意思是有意模仿这个问题

我甚至不确定这是否可能,我模糊地记得JS中有一些属性不可枚举。

无论如何,长话短说:我正在开发一个JS框架,但没有文档,也无法轻松访问代码,如果知道对象能做什么将会大有帮助。

4个回答

16
如果您在项目中包含了 Underscore.js,则可以使用 _.functions(yourObject)

11

我认为这就是你要找的:

var obj = { locaMethod: function() { alert("hello"); }, a: "b", c: 2 };
for(var p in obj)
{
    if(typeof obj[p] === "function") {
      // its a function if you get here
    }
}

3
您应该能够枚举直接设置在对象上的方法,例如:
var obj = { locaMethod: function() { alert("hello"); } };

但大多数方法将属于对象的原型,如下所示:
var Obj = function ObjClass() {};
Obj.prototype.inheritedMethod = function() { alert("hello"); };
var obj = new Obj();

在这种情况下,您可以通过枚举Obj.prototype的属性来发现继承的方法。


这是我在实践中遇到的问题。我会得到我的对象中的所有内容,但不包括Obj.prototype,然后如果我记得,将我的代码放在这里作为答案。我认为这是内省。还有其他术语可以描述这个吗? - Brian Stinar

1
你可以使用以下内容:
var obj = { locaMethod: function() { alert("hello"); }, a: "b", c: 2 };


for(var p in obj)
{
    console.log(p + ": " + obj[p]); //if you have installed Firebug.
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接