我可以在该模块的第二个定义中访问Marionette模块的私有变量吗?

ela*_*anh 2 javascript backbone.js 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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

jev*_*lio 5

你不能.这绝不是Marionette特有的.

javascript中的变量是函数作用域.换句话说,在函数内声明的任何变量仅在该函数内可用.

定义faux-private变量(实际上是公共变量)的常见约定是在名称前加下划线:

//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
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

_从模块外部访问-prefixed变量的勤奋取决于您.您还应该知道模块的加载顺序:为了_myPrivateVar定义,需要在module2.js之前加载module1.js.