#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.
Комментариев нет:
Отправить комментарий