gpt4 book ai didi

javascript - 维护私有(private)状态

转载 作者:行者123 更新时间:2023-11-30 05:59:27 26 4
gpt4 key购买 nike

我正在阅读有关跨具有相同模块的文件的 javascript 私有(private)状态维护的内容。

假设我们有 file1:

var Module = (function(){
//Some private variables declared.
// and initialized.

})();

我们有 file2:

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 || {} 会做同样的事情。为什么要按上述方式完成?此外,删除 myModule._private、myModule._seal 和 myModule._unseal 不会使其无法访问以供进一步使用吗?但是文章说它通过维护模块的私有(private)状态来密封和解封私有(private)变量以供其他文件使用。有关此模式的任何提示或见解?

我所指的文章是 this

最佳答案

一开始,myModule._private 可以是undefined。如果是这样,var _private = myModule._private || {} 将始终将 _private 设置为 {} 并保留 myModule._private 未定义(导致删除未定义的原因),而较长的代码会将 myModule._private 设置为 {}(如果它未定义)并在其他情况下保持不变, 然后执行 _private = myModule._private;

所以所有这些意大利面条都是为了安全delete myModule._private

关于javascript - 维护私有(private)状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9589336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com