今天我发现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"});
属性“index”永远不会被重命名为某个不同的名称。问题是为什么?以及如何强制重命名?
答案 0 :(得分:1)
通常,Closure Compiler可以根据类型重命名。但是,面对松散的类型,它确实会退缩。未直接分配给原型属性的对象文字是其中一种松散类型。这里没有重命名,因为标准外部存在“index”属性。有几个定义,但这里有一个:
答案 1 :(得分:0)
只是没有时间理解这个“非常聪明的逻辑”,我只是将这个属性重命名为其他对象未使用的其他属性。