如何在JSON对象上使用foreach调用javascript函数?

时间:2011-02-09 21:41:37

标签: javascript callback call

我的问题很容易理解。我有一个JSON对象(参见代码),我将按照出现的顺序自动调用该对象的所有函数。

var installer = {
    a : function() {
          ...
        }
    b : function() {
          ...
        }
};

for(var func in installer) {
    fn.call(document);
};

你知道为什么以前的代码不起作用吗?对不起,我是javascript的初学者。

提前致谢!

问候。

2 个答案:

答案 0 :(得分:1)

您没有名为fn的变量,并且您在函数定义的末尾也缺少逗号。

此外,您的函数不会按顺序调用,因为JavaScript会任意命令您的对象属性。您可能需要考虑使用数组,或者如下所述,指定一个确定顺序的数组。

var installer = {
    a : function() {
          ...
        },
    b : function() {
          ...
        },
};

var order = [ "a", "b" ];

for(var i = 0; i < order.length; i++) {
    installer[order[i]].call(document);
}

答案 1 :(得分:0)

您将var func声明为循环installer成员的变量,但您使用fn.call(...)fn来自哪里?

您是否可以执行:installer[func].call(document)而不是fn.call(document)

此外,您在安装程序对象中声明的函数不会接受任何参数,但您将document作为参数传递。

[更新代码,将.call添加到installer[func](document)]