防止uglifyjs重命名某些功能

时间:2012-10-09 19:41:20

标签: javascript uglifyjs

我有一个在其中有构造函数的函数。它创建一个新对象并返回它:

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

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

有没有办法告诉uglify保留一些函数的名字?

2 个答案:

答案 0 :(得分:9)

您需要使用reserved-names参数:

--reserved-names “Car”

答案 1 :(得分:6)

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

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