2010-09-24 79 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

相關問題