ejemplos - javascript html
Cómo realizar comparaciones menores que/mayores que en objetos personalizados en javascript (1)
Tengo una clase personalizada que tiene varios miembros. Necesito compararlos entre sí. javascript me deja escribir:
var a = new MyType(1);
var b = new MyType(2);
if (a < b) { ...
pero no entiendo el comportamiento de la comparación lógica. ¿Puede alguien explicar la semántica de la <comparación en el código anterior? ¿Hay alguna forma de controlar lo que sucede para que pueda obtener el comportamiento correcto? Sé que puedo escribir un método de comparación para la clase, pero como javascript me permite escribirlo, me pregunté qué pensaba que estaba haciendo.
Gracias.
.valueOf
definir un método .valueOf
que devuelva una primitiva que pueda usarse para la comparación:
function MyType( value ){
this.value = value;
}
MyType.prototype.valueOf = function() {
return this.value;
};
var a = new MyType(3),
b = new MyType(5);
a < b
true
a > b
false
a >= b
false
b < a
false
b > a
true
Si no lo define, la cadena "[object Object]"
se usa para la comparación:
"[object Object]" < "[object Object]"
false
"[object Object]" > "[object Object]"
false
"[object Object]" >= "[object Object]"
true
"[object Object]" <= "[object Object]"
true