4 ms·
You really wouldn't want an empty object to be equal to zero, since it might have a prototype that gives it functionality (and having the behavior conditional u
by mistercow 13y ago
You really wouldn't want an empty object to be equal to zero, since it might have a prototype that gives it functionality (and having the behavior conditional upon that would make it preposterously complicated to use correctly).
The real mistake was making [] equal zero.
- TazeTSchnitzel 13y ago[] doesn't equal zero, but '' does, and [] is coerced to '' which is coerced to 0, IIRC.
- mistercow 13y agoWhat's really interesting thing is that all numeric coercions go through a string coercion, and that coercion doesn't (at least in Chrome and Firefox) have to even return a string. Presumably, the toString() method is run repeatedly until either a string or a number comes out. So a simple fraction type can be done like this: function Fraction(n, d) { this.n = n; this.d = d; } Fraction.prototype.toString = function() { return this.n / this.d; }; //Demo var x = new Fraction(1, 2); alert(x * 38); //19 alert(x + x); //1