5

我有一个函数,里面有一个构造函数。它创建一个新对象并返回它:

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

结果 uglify 将 Car 重命名为某个字母,当它返回时,它看起来对象名称只是某个字母。例如,在 chrome 中,它会说对象的类型是“t”。

有没有办法告诉 uglify 保留某些函数的名称?

4

2 回答 2

10

您需要使用reserved-names参数:

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

即使您遵循比尔的建议,您的方法仍然存在问题。

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
于 2012-10-09T19:48:47.207 回答