1
通常的名稱的字符串,如果我有包含函數的名稱的字符串,我可以做類似...的JavaScript - 包含函數
window[functionName](arguments);
然而,在使用時無法正常工作「jQuery對象」風格的編程(或任何正確的術語)。例如;
(function ($) {
"use strict";
$.test = (function() {
var func1 = function() {
alert("func1");
};
var func2 = function() {
alert("func2");
};
return {
Test: function (functionName) {
var fn = window[functionName]; // Need to specify scope here, somehow
if (typeof fn === 'function') {
fn();
} else {
alert("fn() = " + fn);
}
}
}
}());
} (jQuery));
$.test.Test("func1");
$.test.Test("func2");
理想,這將顯示FUNC1其次FUNC2 - 但顯然作用域是錯誤的,我不知道如何表明它在這種情況下。
如何在這種情況下指定函數的範圍?我當然可以使用eval(),但我試圖避免這種情況...
謝謝。
@ AndyE的答案是正確的,但供大家參考,這「jQuery對象風格」沒有一個*官方*項,而是一個使用立即調用的函數表達式創建的閉包(例如,詞法作用域)的示例。 – Xophmeister 2013-03-28 11:17:38