我需要通過var字符串調用函數。我看到這個問題之前已被問到: How to execute a JavaScript function when I have its name as a string當我的名字爲字符串時執行JavaScript函數 - 不工作
但是解決方案不起作用。我做錯什麼了嗎? https://jsfiddle.net/puLh9keg/
// a.callThis is the function that will be called using var string
var a = {
callThis:
function (ok, param1, param2) {
alert(ok + "|" + param1 + "|" + param2);
}
}
// Below is from https://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string
function executeFunctionByName(functionName, context /*, args */) {
var args = [].slice.call(arguments).splice(2);
var namespaces = functionName.split(".");
var func = namespaces.pop();
for(var i = 0; i < namespaces.length; i++) {
context = context[namespaces[i]];
}
return context[func].apply(context, args);
}
// try call a.callThis by var string
var fn = 'a.callThis';
executeFunctionByName(fn, window, true, 'param1', 'param2');
請告訴我們您的意思是 「不工作」。 –
看看你的代碼是如何被添加到結果窗口中的(使用開發工具),你會發現你並沒有使用正確的JSFiddle設置來完成這個工作 –
你的'var a'不在全局範圍內 - 改爲'window.a =' - 或者確保你的JS沒有在「負載」下運行,但是「沒有在主體中換行」或「在頭部沒有換行」 –