是否可以获取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
答案 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/
虽然它有点脏,但它没有考虑参数。