var _private = my._private = my._private || {}
Эта строка означает использование my._private
, если оно существует, в противном случае создайте новый объект и установите для него значение my._private
.
В выражении можно использовать более одного выражения присваивания. Оператор присваивания использует (потребляет) все, что находится справа от него, и выдает это значение в качестве своего вывода слева от присваиваемой переменной. Таким образом, в данном случае, для ясности, в скобках приведенное выше эквивалентно var _private = (my._private = (my._private || {}))
Это случай типа отложенная инициализация . Менее краткая версия будет:
if (!my._private) {
my._private = {};
}
var _private = my._private;
В этом случае кажется, что ленивая инициализация больше используется для везде инициализации , чем лень. Другими словами, все функции могут включать эту строку для безопасного создания или использования my._private
, не удаляя существующую переменную.