我有一個函數,其中有一個構造函數。它創建了一個新的對象,並返回它:防止uglifyjs重命名某些功能
function car() {
function Car() {}
return new Car();
}
結果醜化重命名汽車的一些信件,當它返回它看起來像對象名稱只是一些字母。例如在chrome中,它會說對象的類型是「t」。
有沒有辦法告訴uglify保存一些函數的名字?
我有一個函數,其中有一個構造函數。它創建了一個新的對象,並返回它:防止uglifyjs重命名某些功能
function car() {
function Car() {}
return new Car();
}
結果醜化重命名汽車的一些信件,當它返回它看起來像對象名稱只是一些字母。例如在chrome中,它會說對象的類型是「t」。
有沒有辦法告訴uglify保存一些函數的名字?
您需要使用reserved-names
參數:即使你跟着比爾的建議
--reserved-names 「Car」
,還是有你的方法有問題。
car().constructor !== car().constructor
人們會想到那些等於
我會改變你的方法來創建一個構造函數,給它一個工廠構造
/** @private */
function Car() {
...
}
Car.create = function() {
return new Car();
}
或者以下(模塊模式),並結合比爾的做法。那麼你每次都不會返回一個具有不同原型的物體
var car = (function() {
function Car() {...}
return function() {
return new Car();
}
})();
// car().constructor === car().constructor // true
爲什麼這麼重要?僅用於調試目的?無論如何你都不應該使用醜化的版本進行調試。 –
我會說它比其他任何東西都更具語義。如果您將圖書館暴露給人,他們應該知道他們正在處理的是什麼類型的對象。 – Parris
它如何幫助知道構造函數的名稱是'Car'?它看起來像你試圖保持它的私人,所以你的庫的用戶應該不需要知道什麼是構造函數的名稱。如果它是一個公共對象,則不需要在函數中聲明它。 –