2012-12-20 63 views
1

我需要根据各种情况有选择地运行几个函数。我有这样一个基本的目标:函数名称作为对象值

object = { 
    whatever : { 
    objects : null 
    }, 
    something : { 
    objects : // some object 
    } 
}; 

我需要通过对象的值进行迭代,如果objectsnot null,我需要运行特定的功能。如果whatever.objects不为空,则需要运行whateverFunction();。如果something.objects不为空,我需要运行somethingFunction();

for(i in object) 
{ 
    if (object[i].objects) 
    // run a certain function 
} 

根据对象中的值运行这些人为命名的函数的最佳方法是什么?我可以将“要运行的功能”的名称存储在对象中,但我想尽量避免评估。

创建一个类对象,每个类都有自己的函数可以运行,如果是的话,我该怎么做呢?

回答

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(); 
    } 
} 

功能本身,其可以被传递和存储的对象。无需存储该函数的名称;存储函数本身。

+2

仅供参考:函数本身就是对象,因此可以传递并存储。所以,不需要存储函数的名字;存储函数本身。 (如果情况允许,就是这样) – Matchu

+0

尼斯和封装 – Phil

+1

@Matchu哈哈,我正在研究这个解释,但你打败了我。 –

1

如果whateverFunction()somethingFunction()是全球性的,尝试这样的事情

var funcName = 'somethingFunction'; 

window[funcName](); 
相关问题