2

我在同一个模块中有两个模块namespace,我想在它们之间传递一个变量。命名空间被调用app,变量是a- 但由于某种原因,当我的方法被调用时,我的变量a总是出现。null

这是代码:

// module 1
(function() {
    app.module1 = (function() {
        var a = null; 
        canvas.addEventListener('mousedown', function(e) {
            a = { message: hallo };
            app.module2.print();
        }, 0);

        return {
            a: a
        };
    })();
})();

// module 2

(function() {
    app.module2 = (function() {
        var print = function() {
            console.log(app.module1.a);
        }

        return {
            print: print
        };
    })();
})();
4

2 回答 2

1

这是因为您的处理程序是指本地a而不是a模块上的属性。我建议您改为修改对象,或者您可以这样做:

// module 1
(function () {
  app.module1 = (function () {
    var interface = {
      a: null
    };
    canvas.addEventListener('mousedown', function (e) {
      //this way, you are modifying the object
      interface.a = {
        message: hallo
      };
      app.module2.print();
    }, 0);
    return interface;
  })();
})();
于 2013-05-03T23:02:36.433 回答
1

检查这个jsbin

基本上你可以做的是每次计算变量:

在您的模块 1 中:

a: function(){return a;}

无论您在哪里使用:

console.log(app.module1.a());
于 2013-05-03T23:19:15.690 回答