通常、関数の名前を含む文字列があれば、次のようなことができます...
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() を使用することもできますが、それを避けようとしています...
ありがとう。