UPDATE2:
我真正想问的问题已经在另一个页面中提出过争论。请检查以下条目。
(感谢BobS。)
How can I access local scope dynamically in javascript?
您好。
我已经开始使用jQuery了,我想知道如何从String动态调用匿名函数中的函数。 比方说,我有以下功能:
function foo() {
// Being in the global namespace,
// this function can be called with window['foo']()
alert("foo");
}
jQuery(document).ready(function(){
function bar() {
// How can this function be called
// by using a String of the function's name 'bar'??
alert("bar");
}
// I want to call the function bar here from String with the name 'bar'
}
我一直试图找出可能是'window'的对应物,它可以从全局命名空间调用函数,例如window [“foo”]。 在上面的小例子中,如何从字符串“bar”调用功能栏?
感谢您的帮助。
更新:
这就是我想要的:
作为Javascript的新手,我认为'this'会在闭包中与'window'对应,并尝试写作:
// in the closure
name = 'bar';
this[name]; // undefined ...
并且失败了(当然......) 所有这些都是为了追求进一步的懒惰。 Javascript对我来说有点新鲜,目前我一直在尝试尽可能地编写代码。
答案 0 :(得分:3)
正如Kobi所写,eval可能是一个不错的选择。或者,有没有理由不这样做
$(function(){
var localNamespace = {};
function bar() {
alert("bar");
}
localNamespace['bar'] = bar;
// Now bar() can be called by, well, localNamespace['bar']
}
<强>更新强> 类似的SO条目,例如How can I access local scope dynamically in javascript?,似乎表明你没有使用这两种方法中的一种或者甚至更丑的东西都不运气。
答案 1 :(得分:2)
在ready
功能中:
window.bar = function bar() {
// ...
}
然后,您可以访问window['bar']
。