2010-09-24 38 views
2

如何根据字符串参数在对象内部找到并执行函数?查找并执行与字符串匹配的JavaScript函数

请看下面的例子:

   var parameters = 'people'; 

       switch (parameters) { 
        case 'people': 
          people.initialize(); 
          break; 
       } 

如何删除开关case语句在这种情况下?只需知道对象的字符串名称就可以调用对象吗?

回答

3

组织你的对象......

var myObjects = { 
    people: someObject, 
    notPeople: someOtherObject 
}; 
var parameters = 'people'; 
myObjects[parameters].initialize(); 

如果您正在使用全局玩(做全局未播放),那么你可以逃脱:

window[parameters].initialize(); 

...但组织它们在逻辑对象是一个更好的选择。

-1
function people() { alert('You called people().'); } 
var parameters = 'people'; 
eval(parameters+'()'); 

这应该给你一个警告说“你叫人()”。

+1

eval效率低下,很难调试,并且遇到范围问题。尽可能避免它(几乎总是)。 – Quentin 2010-09-24 12:27:52

+0

Eval由于相同的原因使SQL注入成为危险是一个问题。最好使用David Dorward的方法。 – ssokolow 2010-09-24 12:28:20

+0

我同意。 [至少7个以上的字符。] – 2010-09-24 12:32:14

0

您可以随时使用eval ...

1

您可以使用eval。

或者你可能想用一个字符串使用“工厂模式” http://en.wikipedia.org/wiki/Factory_method_pattern

对象宣布自己的工厂。一旦你有一个字符串请工厂给你的对象。

+0

谢谢,工厂模式非常有趣和相关。 – Victor 2010-09-26 05:05:51

相关问题