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
}

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

创建一个类对象是否更有意义,每个类对象都有自己的要运行的函数,如果是这样,我将如何做到这一点?

4

2 回答 2

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

函数本身就是可以传递和存储的对象。无需存储函数名称;存储函数本身。

于 2012-12-20T03:41:04.383 回答
1

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

var funcName = 'somethingFunction';

window[funcName]();
于 2012-12-20T03:40:39.173 回答