对不起,奇怪的标题...不知道如何查询这种语言。

当我遇到此示例代码时,我正在阅读有关module patterns的信息。它发生在示例模块模式的闭包中,用于在“宽松地扩展”模块时在不同文件之间维护私有(private)状态。

编辑-包含其余模块代码

var MODULE = (function (my) {
    var _private = my._private = my._private || {},
        _seal = my._seal = my._seal || function () {
            delete my._private;
            delete my._seal;
            delete my._unseal;
        },
        _unseal = my._unseal = my._unseal || function () {
            my._private = _private;
            my._seal = _seal;
            my._unseal = _unseal;
        };

    // permanent access to _private, _seal, and _unseal

    return my;
}(MODULE || {}));

我已经尝试将其分解,但并没有增加。

我开始从右到左看。现在,我已经看到了var someVar = something || somethingElse beore,并且我只能假设如果未设置某些内容(falsenull等),它会将其评估为 bool(boolean) 表达式并设置为其他值(请确认)。

那就是我迷路的地方。我只能假定设置my._private的目的是将其设置为空对象(如果不存在的话)...但这只是一个推测。

在此处设置my._private的目的是什么?

最佳答案

请记住,Javascript中的每个语句都会求值,甚至是赋值(求值就是所赋值)。

foo = bar = 3;

是相同的
foo = (bar = 3);

这与
bar = 3;
foo = 3;

在您的情况下,如果my._private当前为假值,则将其设置为{},然后将该值也分配给本地_private变量

关于javascript - var something = somethingElse.obj = somethingElse.obj || {}-这是做什么用的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4368436/

10-10 23:34