按名称调用闭包中的本地函数

时间:2015-11-13 15:48:27

标签: javascript

我有以下代码结构:

(function() {
   var Module = (function() {
      var firstMethod = function() {
         var name = 'secondMethod';
         console.log(window[name]());
      };
      var secondMethod = function() {
         return 2;
      };
      return {
         firstMethod: firstMethod
      };
   })();
   Module.firstMethod();
})();

代码应返回2,但它返回window[name]未定义的错误,这是真的。

为什么这个未定义,我该如何解决?

2 个答案:

答案 0 :(得分:0)

目前还不清楚你想做什么:你定义var secondMethod,这使它成为本地的。 window用于全局变量。你可以:

window.secondMethod = function() { return 2 }

或:

(function() {
   function Module() {
      this.firstMethod = function() {
         var name = 'secondMethod';
         console.log(this[name]());
      };
      this.secondMethod = function() {
         return 2;
      };
      return this;
   };
   var module = new Module();
   module.firstMethod();
})();

答案 1 :(得分:0)

(function () {
    var Module = (function () {
        var firstMethod = function () {
            var name = 'secondMethod';
            console.log(window[name]());
        };
        window.secondMethod = function () {
            return 2;
        };
        return {
            firstMethod: firstMethod
        };
    })();
    Module.firstMethod();
})();