2013-02-19 38 views
2

Marionette允許您在單獨的文件中拆分模塊的定義。我可以在模塊的第二個定義中訪問Marionette模塊的私有變量嗎?

是否可以通過模塊的第二部分以某種方式訪問​​在模塊的一部分中定義的專用變量或函數? 例如:

//in module1.js 
App.module("MyModule", function(MyModule, App, Backbone...){ 
    myPrivateVar = 0; 
} 

//in module2.js 
App.module("MyModule", function(MyModule, App, Backbone...){ 
    var myPrivateFunction = function(){ 
     if (myPrivateVar>0){ 
      //do something 
     } 
    } 
} 

回答

5

你不能。這絕不是專用於木偶。

javascript中的變量是函數作用域。換句話說,在函數中聲明的任何變量只能在該函數中使用。

定義人造私有變量,一個通常的規則(即實際上是公開的)是一個下劃線作爲名稱的前綴:

//in module1.js 
App.module("MyModule", function(MyModule, App, Backbone...){ 
    MyModule._myPrivateVar = 0; 
}); 

//in module2.js 
App.module("MyModule", function(MyModule, App, Backbone...){ 
    var myPrivateVar = MyModule._myPrivateVar; 
    var myPrivateFunction = function(){ 
     if (myPrivateVar>0){ 
      //do something 
     } 
    } 
}); 

沒有被禁止訪問_ -prefixed變量的勤奮之外的模塊了給你。您還應該瞭解模塊的加載順序:爲了定義_myPrivateVar,需要在module2.js之前加載module1.js。

相關問題