到目前为止的答案是正确的,但缺乏解释。
在 JavaScript 中,当名称是字符串时,您不能按名称调用函数。您可以做的是按名称从对象中检索一个值,如果该值恰好是一个函数,您就可以调用它。例如:
var myObject = {};
myObject.myFunction = function() { alert('test!'); };
// Get the property on `myObject` called `myFunction`
var theFunctionLookup = myObject['myFunction'];
// Since that property was a function, you can call it!
theFunctionLookup();
在浏览器中,在全局范围内定义的函数被附加到window
对象上。例如,这有效:
function myFunction() { alert('test'); }
var theFunctionLookup = window['myFunction'];
theFunctionLookup();
您可以将最后两行缩短为一行:
function myFunction() { alert('test'); }
// Look up and call the function in one line.
window['myFunction']();
出于同样的原因,您可以使用动态计算的字符串来查找函数。
function checkBalloon() {
alert('checking balloon');
}
function toggle(n){
if (sessionStorage['toggle'+n]== 0){
window['check' + n]();
check+n();
}
}
toggle('Balloon');