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

问题描述:

我的问题很容易理解。我有一个JSON对象(请参阅代码),我将按照出现的顺序自动调用此对象的所有函数。
如何在JSON对象上使用foreach调用javascript函数?

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

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

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

在此先感谢!

问候。

+0

你做**不**有一个JSON对象。你有一个正常的JS对象用对象字面值表示法定义:http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/ – 2011-02-09 21:48:31

您声明var func通过的installer成员变量循环,但您使用fn.call(...)fn从哪里来的?您可以:installer[func].call(document)而不是fn.call(document)

另外你在安装程序对象中声明的函数不带任何参数,但是你传递的是document作为参数。

[更新代码,添加缺少.callinstaller[func](document)]

您没有一个名为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); 
} 
+0

我认为文档是HTML文档,一个全局变量在桌面浏览器的JavaScript环境中可用 – 2011-02-09 21:47:12

+0

哦,错过了 – rfw 2011-02-09 21:47:53