为什么要通过括号符号调用函数
Why calling a function through bracket notation
我有以下代码:
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"]()
将工作。
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- node.js:setInterval()正在跳过调用
- 需要在 JavaScript 中调用一个方法,当在 SharePoint 日历中单击更多项目旁边的三角形符号时
- 通过调用传单中的函数重新符号化比例符号
- 自定义 ajax 调用以 & 符号.js
- CKEditor:调用编辑器#setData后恢复插入符号位置
- 得到"符号查找错误”;当从C++(Node.js Addon)调用C库时
- 在ajax调用期间,Angular.js智能表加载符号
- 如何在c++中动态调用属性名,就像JS中的方括号符号一样
- 为什么要通过括号符号调用函数
- AJAX调用-“"带有重音的字符所在的问题符号