Включите --debug true
, чтобы проверить вывод и то, что frame.storeBack.LocalStore.isAvailable
переименовано в.
Сбросить карту имен переменных, чтобы проверить, была ли frame.storeBack.LocalStore.isAvailable
сведена.Закрывающий компилятор может сплющить frame.storeBack.LocalStore.isAvailable
сначала в frame$storeBack$LocalStore$isAvailable
, а затем переименовать все это в глобальную функцию "a" или что-то в этом роде.Это называется сплющиванием пространств имен.Проверьте выходные данные отладки, чтобы увидеть, было ли ваше объявление функции переименовано в:
$frame$storeBack$LocalStore$isAvailable$$ = function() {
В этом случае прямой вызов frame.storeBack.LocalStore.isAvailable()
все равно вызовет упрощенную глобальную версию, здесь никаких проблем!Однако вы не можете объяснить, что isAvailable()
существует в frame.storeBack.LocalStore
(другом объекте) больше.В скомпилированном выводе frame.storeBack.LocalStore.isAvailable
и frame.storeBack.LocalStore
теперь разделены.Это поведение сплющивания пространства имен компилятора, , если это происходит .
Вы просите проблем с помещением свойств в саму функцию конструктора - компилятор выполняет много оптимизаций для классовчто вы можете не ожидать.
Проверьте выходные данные отладки и карту имен переменных для подтверждения.Возможно, вам придется удалить функцию-оболочку закрытия, чтобы увидеть действительные имена в файле карты.