刚刚了解了 JavaScript 模块模式。爱它!
因此,我创建了通用自定义库,该库位于一个文件中,我将其包含在所有项目中。然后,我想为每个单独的项目添加几个项目特定的方法,并希望将它们放在单独的文件中。我不想为这些方法创建一个全新的对象,而是想将它们添加到现有的 MODULE 对象中。
我该怎么做呢?谢谢
var MODULE = (function () {
var my = {},
privateVariable = 1;
function privateMethod() {
// ...
}
my.moduleProperty = 1;
my.moduleMethod = function () {
// ...
};
return my;
}());
Run Code Online (Sandbox Code Playgroud)
您只需说即可添加属性或功能Module.namedproperty = ...whatever...
但应该注意的是,如果它位于不同的文件中,它将无法访问模块状态中的任何私有变量。
如果您想为这些新方法拥有额外的私有状态,或者不想担心首先运行哪个文件,您可以像这样设置模块
var MODULE = (function (my) {
var privateVariable = 1;
function privateMethod() {
// ...
}
my.moduleProperty = 1;
my.moduleMethod = function () {
// ...
};
return my;
}(MODULE||{}));
Run Code Online (Sandbox Code Playgroud)
如果尚未创建模块,则会创建一个新模块;如果已创建,则会添加到现有模块。
尽管如此,私有变量仍然是它们自己的特定闭包的私有变量,而不是整个命名空间/模块的私有变量。
该模块格式将输入接收到其闭包函数中。如果 MODULE 已定义,则它接受 MODULE 对象,否则它创建一个新的空对象。 ||是逻辑或,因此MODULE||{}与“如果 MODULE 已定义并且为真(像 MODULE 这样的对象将是),则传递它,如果它未定义或为假,则传递一个空对象。
额外的括号并不是绝对必要的,但它们是一种约定,以明确传递的是函数的结果,而不是函数本身。
| 归档时间: |
|
| 查看次数: |
1716 次 |
| 最近记录: |