Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Двукратное присвоение свойства переменной - зачем?

#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.

Комментариев нет:

Отправить комментарий