¿Es posible anular la comparación de equivalencia en Javascript?Reemplazar la comparación de equivalencia en Javascript
Lo más cercano que he llegado a una solución es mediante la definición de la función valueOf y la invocación de valueOf con un signo más delante del objeto.
Esto funciona.
equal(+x == +y, true);
Pero esto no funciona.
equal(x == y, true, "why does this fail.");
Aquí están mis casos de prueba.
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 aquí: http://jsfiddle.net/tWyHg/5/
¿Qué es exactamente lo que intenta lograr aquí? –
@ElliotBonneville Estoy creando objetos de fracción en javascript. –
¿Cómo son los objetos fracción? ¿Podemos ver alguna entrada de ejemplo? O tal vez estoy malinterpretando lo que estás tratando de hacer ... –