获取JavaScript对象中存在的所有函数(包括嵌套函数)

时间:2013-07-23 19:06:15

标签: javascript

是否可以获取JavaScript对象中的所有函数?

考虑以下对象:

var myObject = 
{ 
    method: function () 
    { 
        this.nestedMethod = function () 
        { 
        } 
    },
    anotherMethod: function() { } 
});

如果我把它传递给下面的函数,我会得到这个结果:

method
anotherMethod

(获取所有函数名称的函数)

function properties(obj) 
{
    var output = "";
    for (var prop in obj) {
        output += prop + "<br />";
        try
        {
            properties(obj[prop]);
        }
        catch(e){}
    }
    return output;
}

如何进行此输出:

method
nestedMethod
anothermethod

2 个答案:

答案 0 :(得分:3)

nestedMethod仅在运行函数后创建。

您可以调用对象上的每个函数来查看它们是否创建了更多函数,但这是一个可怕的想法。

答案 1 :(得分:0)

您正在遍历对象的元素。 对象中的函数不是对象。 所以只需从函数中创建一个对象,然后迭代它就可以检查它。

这有效:

function properties(obj) {
    var output = "";
    for (var prop in obj) {
        output += prop + "<br />";

        // Create object from function        
        var temp = new obj[prop]();

        output += properties(temp);
    }

    return output;
}

小提琴:http://jsfiddle.net/Stijntjhe/b6r62/

虽然它有点脏,但它没有考虑参数。