我希望在ADVANCED_OPTIMIZATIONS模式下重命名對象屬性。優化前如何使用GCC重命名由Object.defineProperty創建的屬性
代碼:
/**
* @constructor
*/
function Container() {
var items = [];
Object.defineProperty(this, 'items', {
set: function(value) {
items = value;
},
get: function() {
return items;
}
});
}
var container = new Container();
container.items = [1,2,3];
console.log(container.items);
優化後:
var b = new function() {
var a = [];
Object.defineProperty(this, "items", {set:function(c) {
a = c
}, get:function() {
return a
}})
};
b.e = [1, 2, 3];
console.log(b.e);
關閉編譯器不改名屬性名稱 - 「項目」。
爲什麼要重命名它? – Oriol
我不認爲任何編譯器會自行重命名任何對象屬性。自動執行是危險的。 – Thomas
我很震驚:https://developers.google.com/closure/compiler/docs/api-tutorial3#propnames我的結論:千萬不要使用gcc的ADVANCED_OPTIMIZATIONS。我會使用一些外國minifyer像uglifyjs – Thomas