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