我有一个在其中有构造函数的函数。它创建一个新对象并返回它:
function car() {
function Car() {}
return new Car();
}
因此,uglify将Car重命名为某个字母,当它返回时,它看起来像对象名称只是一些字母。例如,在chrome中,它会说对象的类型是“t”。
有没有办法告诉uglify保留一些函数的名字?
答案 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