È possibile sovrascrivere il confronto di equivalenza in Javascript?Ignora il confronto di equivalenza in Javascript
La soluzione più vicina a una soluzione è definire la funzione valueOf e richiamare valueOf con un vantaggio davanti all'oggetto.
Questo funziona.
equal(+x == +y, true);
Ma questo fallisce.
equal(x == y, true, "why does this fail.");
Ecco i casi di test.
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.");
});
Demo qui: http://jsfiddle.net/tWyHg/5/
Che cosa stai cercando di realizzare qui? –
@ElliotBonneville Sto creando oggetti frazione in javascript. –
Che aspetto hanno gli oggetti della frazione? Possiamo vedere qualche esempio di input? O forse sto solo fraintendendo quello che stai cercando di fare ... –