2014-04-07 91 views
1

我最近從使用手寫編譯腳本和Google Closure編譯器切換到使用Brunch,在那裏我或多或少被迫使用UglifyJS。使用UglifyJS(早午餐)壓縮Object.prototype.functions

我有配置選項

uglify: 
    mangle: 
    toplevel: true 
    eval: true 
    functions: true 
    compress: true 

我的班使用的正在建造的原型風格。

即。

function Car() { } 

Car.prototype.startEngine = function() { } 

,然後(c是在全球範圍內和被調用一次)

var c = new Car(); 
car.startEngine(); 

添加頂層:真正的配置選項軋液車,但沒有樣機功能(即startEngine)是錯位的。

我想不改變我的類結構,但我可以得到UglifyJS來破壞這些函數名?

謝謝:)

回答

0

醜化不必裂傷對象屬性的能力。但是,通過切換到變量的括號表示法,您可能能夠更接近您要查找的內容。

function Car() { } 

var startEngine = 'startEngine'; // could actually be any random string or number 
Car.prototype[startEngine] = function() { } 

var c = new Car(); 
car[startEngine](); 

這依賴於你的第一個片段和第二個均具有訪問startEngine變量,所以這取決於你的項目結構,你可能要重新聲明變量等效方式或想出其他創造性的方式來維護其範圍內的價值。

Mangle nested classes and variables with uglifyjs的答案提供了更詳細的解釋。

0

是的,現在你可以。你只需要修改你的代碼。 請參閱我的answer here