查找并执行与字符串匹配的JavaScript函数

时间:2010-09-24 12:23:36

标签: javascript

如何根据字符串参数在对象内部查找和执行函数?

请参阅以下示例:

               var parameters = 'people';

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

如何在此方案中删除switch case语句?是否可以通过知道对象的字符串名称来调用对象?

4 个答案:

答案 0 :(得分:3)

整理对象......

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

如果你正在使用全局变量(使用全局变量),那么你就可以逃脱:

window[parameters].initialize();

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

答案 1 :(得分:1)

您可以使用eval。

或者您可能想要使用“模式工厂”http://en.wikipedia.org/wiki/Factory_method_pattern

该对象使用字符串向工厂声明自己。一旦你有一个字符串,请工厂给你一个对象。

答案 2 :(得分:0)

您始终可以使用eval ...

答案 3 :(得分:-1)

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

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