我有以下代码:
function hi(){
alert("hi");
}
window["hi"]();
我以为hi
会被执行。有什么类似的东西,我能做什么? (请不要评价)
我想用括号表示法,因为函数名称将以字符串形式显示。
答案 0 :(得分:3)
如果它不起作用,你可能在错误的范围内,尝试
window.hi = function(){
alert("hi");
}
window["hi"]();
如果在jsFiddle中进行测试,则默认选项onLoad
或onDomReady
选项会插入一个事件处理程序,该处理程序等待带回调的DOM准备就绪。
回调函数会创建一个新范围,因此在向窗口对象添加属性时,必须使用window.prop
专门引用它,只需键入prop
是不够的,因为它不在正确的范围内。
答案 1 :(得分:0)
您可以直接调用它:
hi();
或者
window.hi();
如果你真的想要涉及全局对象。
编辑如果您希望通过动态名称访问该功能,那么您当然可以,但功能必须可以作为某个对象的属性。全局对象是一种可能性:
function hi() {
alert("hi");
}
window.hi = hi;
然后window["hi"]()
将有效。或者,您可以为此目的创建对象:
var functionRegistry = {}
function hi() {
alert("hi");
}
functionRegistry.hi = hi;
然后functionRegistry["hi"]()
将有效。