2015-08-20 59 views
1

有沒有辦法在ADVANCED_OPTIMIZATIONS模式下強制Closure編譯器重命名/縮短pushState()方法,因爲它沒有在History API的上下文中使用?Closure編譯器ADVANCED_OPTIMIZATIONS強制方法重命名?

/** 
* @constructor 
*/ 
function Moo() {} 

Moo.prototype = { 
    pushState: function(foo) { 
    console.log(foo); 
    } 
}; 

var moo = new Moo(); 
var y = moo.pushState("123"); 

同樣與具有相同名稱的陣列上本地方法,例如等其他方法:myFoo.push()其中myFoo不是一個數組,但對象或實例。

回答

0

重命名與extern文件中的任何屬性共享一個名稱的屬性需要基於類型的優化。最近版本的編譯器的命令行版本默認啓用這些版本。通過基於類型的優化,當編譯器缺少類型信息時,屬性不會重命名。

但是,您的測試用例通過基於類型的優化完全重命名。

// ==ClosureCompiler== 
// @compilation_level ADVANCED_OPTIMIZATIONS 
// @use_types_for_optimization true 
// @output_file_name default.js 
// ==/ClosureCompiler== 

/** @constructor */ 
function Moo() {} 

Moo.prototype = { 
pushState: function(foo) { 
    console.log(foo); 
} 
}; 

var moo = new Moo(); 
var y = moo.pushState("123"); 
相關問題