如何根據字符串參數在對象內部找到並執行函數?查找並執行與字符串匹配的JavaScript函數
請看下面的例子:
var parameters = 'people';
switch (parameters) {
case 'people':
people.initialize();
break;
}
如何刪除開關case語句在這種情況下?只需知道對象的字符串名稱就可以調用對象嗎?
如何根據字符串參數在對象內部找到並執行函數?查找並執行與字符串匹配的JavaScript函數
請看下面的例子:
var parameters = 'people';
switch (parameters) {
case 'people':
people.initialize();
break;
}
如何刪除開關case語句在這種情況下?只需知道對象的字符串名稱就可以調用對象嗎?
組織你的對象......
var myObjects = {
people: someObject,
notPeople: someOtherObject
};
var parameters = 'people';
myObjects[parameters].initialize();
如果您正在使用全局玩(做全局未播放),那麼你可以逃脫:
window[parameters].initialize();
...但組織它們在邏輯對象是一個更好的選擇。
function people() { alert('You called people().'); }
var parameters = 'people';
eval(parameters+'()');
這應該給你一個警告說「你叫人()」。
您可以隨時使用eval ...
您可以使用eval。
或者你可能想用一個字符串使用「工廠模式」 http://en.wikipedia.org/wiki/Factory_method_pattern
對象宣佈自己的工廠。一旦你有一個字符串請工廠給你的對象。
謝謝,工廠模式非常有趣和相關。 – Victor 2010-09-26 05:05:51
eval效率低下,很難調試,並且遇到範圍問題。儘可能避免它(幾乎總是)。 – Quentin 2010-09-24 12:27:52
Eval由於相同的原因使SQL注入成爲危險是一個問題。最好使用David Dorward的方法。 – ssokolow 2010-09-24 12:28:20
我同意。 [至少7個以上的字符。] – 2010-09-24 12:32:14