我需要根据不同情况有选择地运行多个功能。我有一个这样的基本对象:
object = {
whatever : {
objects : null
},
something : {
objects : // some object
}
};
我需要遍历对象值,如果objects
是not null
,我需要运行一个特定的函数。如果whatever.objects
不为空,我需要运行whateverFunction();
。如果something.objects
不为空,我需要运行somethingFunction();
。
for( i in object )
{
if ( object[i].objects )
// run a certain function
}
根据对象中的值运行这些artibtrarily命名函数的最佳方法是什么?我可以在对象和eval()
中存储“要运行的函数”的名称,但我想尽量避免评估。
创建一个每个都有自己的函数运行的类对象会更有意义吗?如果有的话,我该怎么做?
答案 0 :(得分:5)
object = {
whatever : {
objects : null,
func : whateverFunction
},
something : {
objects : // some object,
func : somethingFunction
}
};
for (var i in object) {
if (object[i].objects) {
objects[i].func();
}
}
函数本身就是可以传递和存储的对象。无需存储函数的名称;存储函数本身。
答案 1 :(得分:1)
如果whateverFunction()
和somethingFunction()
是全球性的,请尝试使用此类
var funcName = 'somethingFunction';
window[funcName]();