更新2:
我真正想要問的是已經在另一頁中爭論。請檢查以下條目。
(感謝BobS。)
How can I access local scope dynamically in javascript?Javascript:調用一個函數用字符串匿名函數編寫,函數的名字沒有eval?
你好。
我已經開始使用jQuery,想知道如何從String中動態地調用匿名函數中的函數。 比方說,例如,我有以下功能:
function foo() {
// Being in the global namespace,
// this function can be called with window['foo']()
alert("foo");
}
jQuery(document).ready(function(){
function bar() {
// How can this function be called
// by using a String of the function's name 'bar'??
alert("bar");
}
// I want to call the function bar here from String with the name 'bar'
}
我一直在試圖找出這可能是「窗口」的對手,它甚至可以從全局命名空間功能,如窗口[」富「。 在上面的小例子中,如何從String「bar」調用函數欄?
謝謝你的幫助。
更新:
這是我想要的東西:
- 定義那些只在封閉的功能。
- 避免在包含這些函數的閉包中創建一個Object,以便作爲obj ['bar']進行訪問。
- 避免評估(如果可能的話),以便更直接地編寫代碼(如果存在)。
- 通過URI參數或任何變量動態地決定函數的名稱。
作爲JavaScript的一個新手,我想「這」將在關閉「窗口」的對應,並試圖寫:
// in the closure
name = 'bar';
this[name]; // undefined ...
和失敗(當然...)。
所有這些都是爲了追求更進一步的懶惰。 Javascript對我來說是一種新鮮事物,目前我一直試圖儘可能懶惰地編寫代碼。
Eval在這裏看起來是個不錯的選擇。無論如何,你可能會創建嵌套閉包,不是嗎?你能解釋一下這個場景嗎?你爲什麼把'bar'當成一個字符串?您是否考慮過在需要它們的地方定義這些功能? – Kobi 2010-03-08 05:31:33
非常感謝您的評論和建議。爲了清楚起見,我在上面的問題板中添加了我想要的內容(下面的編輯)。我希望這一次我的解釋足以被理解。謝謝。 – Wanien 2010-03-08 06:27:30