I have a function that has a constructor within it. It creates a new object and returns it:
function car() {
function Car() {}
return new Car();
}
As a result uglify renames Car to some letter and when this returns it looks like the object name is just some letter. In chrome for instance it will say the type of the object is "t".
Is there a way to tell uglify to preserve some function's name?
You need to use the reserved-names
parameter:
--reserved-names “Car”
Even if you follow Bill's suggestion, there's still a problem with your approach.
car().constructor !== car().constructor
One would expect those to be equal
I would change your approach to creating a constructor and giving it a Factory constructor
/** @private */
function Car() {
...
}
Car.create = function() {
return new Car();
}
Or the following (module pattern), combined with Bill's approach. Then you're not returning an object with a different prototype every time
var car = (function() {
function Car() {...}
return function() {
return new Car();
}
})();
// car().constructor === car().constructor // true
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With