Überschreiben Sie den Äquivalenzvergleich in Javascript
Ist es möglich, den Äquivalenzvergleich in Javascript zu überschreiben?
Am nächsten an einer Lösung ist es, die valueOf-Funktion zu definieren und valueOf mit einem Plus vor dem Objekt aufzurufen.
Das funktioniert.
<code>equal(+x == +y, true); </code>
Das scheitert aber.
<code>equal(x == y, true, "why does this fail."); </code>
Hier sind meine Testfälle.
<code>var Obj = function (val) { this.value = val; }; Obj.prototype.toString = function () { return this.value; }; Obj.prototype.valueOf = function () { return this.value; }; var x = new Obj(42); var y = new Obj(42); var z = new Obj(10); test("Comparing custom objects", function () { equal(x >= y, true); equal(x <= y, true); equal(x >= z, true); equal(y >= z, true); equal(x.toString(), y.toString()); equal(+x == +y, true); equal(x == y, true, "why does this fails."); }); </code>
Demo hier:http://jsfiddle.net/tWyHg/5/