为什么要通过括号符号调用函数

Why calling a function through bracket notation

本文关键字:符号 调用 函数 为什么      更新时间:2023-09-26

我有以下代码:

function hi(){
alert("hi");
}
window["hi"]();

我以为hi会被执行。有什么类似的事情我可以做吗?(请不要评估)

编辑:

我希望它用括号表示,因为函数名将用字符串表示。

如果它不起作用,您可能在错误的范围内,请尝试

window.hi = function(){
    alert("hi");
}
window["hi"]();

编辑:

如果在jsFiddle中进行测试,则onLoad的默认选项或onDomReady选项将插入一个事件处理程序,该事件处理程序将通过回调等待DOM就绪。

回调函数创建了一个新的作用域,因此在向窗口对象添加属性时,必须使用window.prop专门引用它,仅仅键入prop是不够的,因为它不在正确的作用域中。

您可以直接调用它:

hi();

window.hi();

如果您真的想涉及全局对象。

edit如果希望通过动态名称访问函数,那么您当然可以,但函数必须作为某个对象的属性可访问。全局对象是一种可能性:

function hi() {
  alert("hi");
}
window.hi = hi;

然后window["hi"]()将工作。或者,您可以为此目的创建一个对象:

var functionRegistry = {}
function hi() {
  alert("hi");
}
functionRegistry.hi = hi;

然后functionRegistry["hi"]()将工作。