谷歌闭包编译器,某些属性永远不会被重命名
Google Closure Compiler, some properties will never be renamed?
今天我发现了一个与Google闭包编译器重命名属性有关的问题。如果有人能解释我为什么这个代码,我会很高兴:
// ==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"永远不会重命名为其他名称。问题是为什么?如何强制重命名?
通常,闭包编译器可以根据类型进行重命名。然而,面对松散的类型,它确实会后退。没有直接分配给原型属性的对象文字是松散类型之一。在这里,它不会被重命名,因为标准外部中存在"index"属性。有几个定义,但这里有一个:
https://github.com/google/closure-compiler/blob/641cf61b99280b8bb4b62ecce873e51208501fec/externs/es3.js#L718
只是没有时间理解这个"非常聪明的逻辑",我只是将这个属性重命名为其他对象不使用的其他属性。
相关文章:
- 正在使用Dropzone.js删除服务器上已重命名的文件
- Angular重命名模块后未能实例化模块
- 如何使用laravel重命名已存储在服务器中的文件
- 如何使用外部Javascript库(如jQuery)重命名Google闭包样式表
- lodash:重命名对象中的键
- 阻止对的关闭重命名对象键
- gulp重命名多个文件
- Ckfinder在上传之前重命名图像
- 为什么 Google 闭包编译器会重命名对象的属性名称
- 使用 javascript 重命名数组中的对象键
- JSnice如何进行统计重命名,重命名Javascript变量
- 使用 gruntjs 自定义初始化任务重命名模板文件夹
- 重命名上传的文件Ruby On Rails
- 重命名动态添加或删除的表单字段
- 如何使用PHP、提交和单选按钮复制/重命名/覆盖图像
- 导出时如何重命名excel文件
- 重命名Alfresco脚本中的文件
- 我正在尝试将javascript文本框的输入保存回服务器.我想从保存的弹出文本框中获得输入,以重命名文件夹
- 使用AjaxForm Jquery重命名文件
- 谷歌闭包编译器,某些属性永远不会被重命名