函数名称为Object值

时间:2012-12-20 03:38:35

标签: javascript

我需要根据不同情况有选择地运行多个功能。我有一个这样的基本对象:

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
}

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

创建一个每个都有自己的函数运行的类对象会更有意义吗?如果有的话,我该怎么做?

2 个答案:

答案 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]();