Javascript:使用函数';从字符串调用匿名函数中编写的函数;谁的名字没有评估?

Javascript:使用函数';从字符串调用匿名函数中编写的函数;谁的名字没有评估?,javascript,jquery,lambda,scope,namespaces,Javascript,Jquery,Lambda,Scope,Namespaces,更新2: 我真正想问的问题已经在另一页上讨论过了。请检查以下条目。(感谢。) 你好 我已经开始使用jQuery,我想知道如何从字符串动态调用匿名函数中的函数。 比如说,我有以下功能: function foo() { // Being in the global namespace, // this function can be called with window['foo']() alert("foo"); } jQuery(document).ready(function

更新2:
我真正想问的问题已经在另一页上讨论过了。请检查以下条目。
(感谢。)


你好

我已经开始使用jQuery,我想知道如何从字符串动态调用匿名函数中的函数。 比如说,我有以下功能:

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”调用函数栏

谢谢你的帮助

更新
以下是我想要的:

  • 定义仅在闭包中使用的函数
  • 避免在闭包中创建保存这些函数的对象,以便作为obj['bar']访问
  • 避免eval(如果可能的话),以便以更简单的方式编写代码(如果存在)
  • 通过URI参数或任何变量动态确定函数名
  • 作为Javascript的新手,我认为“this”应该与闭包中的“window”相对应,并尝试编写:

    // in the closure
    name = 'bar';
    this[name]; // undefined ...
    
    而且失败了(当然……。

    所有这些都是为了追求进一步的懒惰。Javascript对我来说有点陌生,目前我一直在尝试尽可能懒地编写代码。

    在您的
    ready
    函数中:

    window.bar = function bar() {
        // ...
    }
    

    然后,您可以访问
    窗口['bar']

    ,正如Kobi所写,eval可能是一个不错的选择。或者,是否有任何理由不这样做

    $(function(){
      var localNamespace = {};
      function bar() {
          alert("bar");
      }
      localNamespace['bar'] = bar;
      // Now bar() can be called by, well, localNamespace['bar']
    }
    
    更新:
    类似的SO条目,例如,似乎表明如果不使用这两种方法中的一种或更难看的方法,您就运气不佳。

    Eval似乎是一个不错的选择。你可能会创建嵌套闭包,不是吗?你能解释一下情况吗?为什么将
    bar
    作为字符串?您是否考虑过在需要的地方定义这些函数?非常感谢您的评论和建议。为了说明这一点,我在上面的问题板(编辑下方)中添加了我想要的内容。我希望这次我的解释足够让人理解。谢谢。非常感谢您的及时回复。我很感激。但是,我希望在闭包中定义函数栏,而不是在全局范围内,因为我希望函数被限制在特定的函数(情况)中。对不起,我的解释可能不够充分。谢谢。如果我在这里扮演魔鬼代言人,很抱歉,但是:如果你想从闭包外部访问函数,为什么要在闭包内部定义它?这不是违背了目的吗?这里欢迎任何人指出:)谢谢你的评论。我希望通过从函数名字符串动态调用函数,从闭包内部而不是外部访问函数。但事实上,我也在想,是否可以从闭包之外给它打电话:)非常感谢你的评论和建议。我很感激。非常感谢你的网址。我试着在这里发布之前找到这类条目,但没有找到。知道不可能做我想做的事,我已经迈出了一大步。再次感谢你们这些笨蛋。