#javascript
Нашёл такой вот интересный Cross-File Private State паттерн (кому интересно, ссылочка). 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 _private = my._private = my._private || {} Вопрос: Зачем два раза повторять присваивание одно и того же свойства? Почему нельзя было просто написать var _private = my._private || {}?
Ответы
Ответ 1
Затем, что если свойство my._private все-таки было неинициализировано, то после "двойного" присваивания var _private = my._private = my._private || {} оно станет объектом {} - тем же объектом, на который будет ссылаться локальная переменная _private. Аналогично - для my._seal и my._unseal.
Комментариев нет:
Отправить комментарий