我已经做了相当数量的香草javascript和jquery。我正在尝试编写一个应用程序,该应用程序使用某种形式的关闭来私有化方法,以便所有内容都不在公共名称空间中。Javascript模块模式 - 所有模块都可以访问eachother吗?
我转向模块模式,因为它似乎是我的问题的解决方案,但我不能完全包围它。当您使用此模式将方法添加到主应用程序时,是否所有模块也可以使用其他模块的所有方法?因为,看起来情况并非如此。
var MODULE = (function() {
var my = {},
privateVariable = 1;
function privateMethod() {
// ...
}
my.moduleProperty = 1;
my.moduleMethod = function() {
console.log("Method 1!");
};
my.anotherMethod(); //This doesn't work. anotherMethod() not defined
return my;
}());
var MODULETWO = (function (my) {
my.anotherMethod = function() {
console.log("Method 2!");
};
my.moduleMethod();
my.anotherMethod();
return my;
}(MODULETWO));
出于某种原因,我期望评论的方法工作。我们可以做这项工作吗?我设想有一个app.js与一个应用程序的肉,与其他具有实用功能来帮助该应用程序的单独js文件,但在很多情况下,我设想那些需要访问主应用程序范围的实用程序类。我似乎无法得到...
想法?
有人跟我说过Browserify.js,但我不知道这是否解决了我通过关闭无法访问所有东西的要求。它看起来就像一个捆绑应用程序。
你打算通过'MODULE'调用'MODULETWO'的时候,它是一个错字?即使那样它也不会起作用,因为'MODULE'对方法被添加到对象的'MODULETWO'没有任何意义。 – BatScream