Извините за странный заголовок ... не знаю, как еще узнать о такой языковой функции.
Я читал о шаблонах модулей , когда натолкнулся на этот пример, когда наткнулся на эту строку кода. Это происходит в закрытии примера шаблона модуля для поддержания приватного состояния разных файлов при «свободном расширении» модуля.
РЕДАКТИРОВАТЬ - включен код модуля
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
и могу предположить, что если что-то не установлено (false
, null
и т. Д.), Оно оценивает это как логическое выражение и устанавливает другое значение подтверждения) .
Вот где я заблудился. Я могу только предположить, что цель установки my._private - установить пустой объект, если он не существует ... но это всего лишь гипотеза.
Какова цель установки my._private здесь?