5

その中にコンストラクターを持つ関数があります。新しいオブジェクトを作成して返します。

function car() {
   function Car() {}
   return new Car();
}

その結果、uglify は Car の名前を何らかの文字に変更し、これが返されると、オブジェクト名が単なる文字のように見えます。たとえば、クロムでは、オブジェクトのタイプは「t」であると表示されます。

一部の関数の名前を保持するようにuglifyに指示する方法はありますか?

4

2 に答える 2

10

reserved-names次のパラメーターを使用する必要があります。

--reserved-names “Car”
于 2012-10-09T19:44:19.330 に答える
6

Bill の提案に従ったとしても、あなたのアプローチにはまだ問題があります。

car().constructor !== car().constructor

それらは等しいと予想されます

コンストラクターを作成して Factory コンストラクターを与えるアプローチを変更します

/** @private */
function Car() {
   ...
}

Car.create = function() {
    return new Car();
}

または、Bill のアプローチと組み合わせた次の (モジュール パターン)。次に、毎回異なるプロトタイプを持つオブジェクトを返すわけではありません

var car  = (function() {
   function Car() {...}
   return function() {
       return new Car();
   }
})();

// car().constructor === car().constructor // true
于 2012-10-09T19:48:47.207 に答える