2013-05-03 98 views
2

我在同一個namespace中有兩個模塊,我想在它們之間傳遞一個變量。命名空間被稱爲app,變量是a - 但由於某種原因,我的變量a總是出來null當我的方法被調用。在兩個JavaScript模塊之間傳遞變量不起作用

下面是代碼:

// 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 
     }; 
    })(); 
})(); 
+0

你的意思是有'a = {message:「hallo」};'? 「霍洛」成爲一個字符串?或者是在屏幕的某個地方定義的? – Ian 2013-05-03 23:49:28

回答

1

入住這jsbin

基本上你可以做的是計算變量中的每個時間:

在你的模塊1:

a: function(){return a;} 

無論您使用的是:

console.log(app.module1.a()); 
+0

控制檯打印錯誤:a不是功能 – user1477955 2013-05-03 23:27:58

+1

您是否使用鏈接? – juanpastas 2013-05-03 23:29:39

+0

非常感謝!你是完全正確的!謝謝! – user1477955 2013-05-03 23:59:12

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; 
    })(); 
})(); 
+0

thx,http://jsfiddle.net/XDNjM/它現在可以工作 – user1477955 2013-05-04 11:29:41