我正在阅读有关在具有相同模块的文件中使用JavaScript的私有状态维护。维护私有状态
假设我们有文件1:
var Module = (function(){
//Some private variables declared.
// and initialized.
})();
,我们有文件2:
var Module = (function(myModule){
//Here the same private variables are required.
// And the following implementation enables it.
var _private = myModule._private = myModule._private || {},
_seal = myModule._seal = myModule._seal || function() {
delete myModule._private;
delete myModule._seal;
delete myModule._unseal;
},
_unseal = myModule._unseal = myModule._unseal || function() {
myModule._private = _private;
myModule._seal = _seal;
myModule._unseal = _unseal;
};
return myModule;
}(Module || {}));
的一部分,我无法明白的是var _private = myModule._private = myModule._private || {},
我想var _private = myModule._private || {}
会做同样的事情。为什么按照上述方式完成?而且不会deleting myModule._private, myModule._seal and myModule._unseal
使其无法进一步使用?但文章说,它通过维护模块的私有状态来封装和解密用于其他文件的私有变量。有关这种模式的任何提示或见解?
,我指的是文章是this
您的第二个片段不会返回任何内容。我不确定你为什么用'undefined'覆盖'Module'。 – pimvdb 2012-03-06 18:17:58
@pimvdb:它是我的错。我确实返回myModule – Ajai 2012-03-06 18:21:06