如何根据字符串参数在对象内部查找和执行函数?
请参阅以下示例:
var parameters = 'people';
switch (parameters) {
case 'people':
people.initialize();
break;
}
如何在此方案中删除switch case语句?是否可以通过知道对象的字符串名称来调用对象?
答案 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+'()');
那应该会给你一个警告,说“你叫人()。”