сегодня я нашел проблему, связанную с переименованием свойств компилятором Google Closure. Был бы рад, если кто-то может объяснить мне, почему этот код:Google Closure Compiler, некоторые свойства никогда не будут переименованы?
// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// ==/ClosureCompiler==
// ADD YOUR CODE HERE
console.info({
foo: 'bar',
index: 10,
bla: 'x'
});
всегда компилируется:
console.info({b:"bar",index:10,a:"x"});
«индекс» собственности никогда не будет переименована в какое-то другое имя. Вопрос в том, почему? И как заставить его переименовать?
Это довольно сложный вопрос. Комментарий этой проблемы одним из разработчиков компилятора замыкания может дать некоторую информацию: https://github.com/google/closure-compiler/issues/1054#issuecomment-127026064. – ach
Да, это круто, но на объекте Object.prototype нет элемента «index» ... – Ruslan
@Ruslan FYI это предназначенное поведение. Компилятор проверяет имена известных свойств и избегает их переименования. – user120242