Поскольку в JavaScript нет четко определенных правил определения границ объектов, невозможно запутать имена таким образом, который гарантированно будет правильным.
Например, если у вас была следующая функция:
function f() {
return { first: 'foo', second: 'bar' };
}
Для того, чтобы запутать имена свойств, вам нужно зафиксировать все места, откуда вызывается f
. Поскольку функции в JavaScript являются первоклассными, их можно назначать и передавать произвольным образом, что делает невозможным определение места ссылки на f
без фактического запуска программы.
Кроме того, JavaScript не может указать, что является публичным API, а что нет. Даже если бы минимизатор мог надежно определить, откуда вызывается функция в коде, который вы ей даете, у него не будет возможности внести те же изменения в код, который он не видел.