Dado que las fechas están incorporados en los objetos, y no primitives, se realiza una comprobación de igualdad utilizando las referencias de objetos.
En este caso, los objetos a
y b
no son el mismo objeto, por lo que la prueba falla.
se puede ver la misma utilizando
var a = new String("a");
var b = new String("a");
alert(a == b); //false
Mediante el uso de .getTime
o .valueOf
que está convirtiendo el valor de los objetos en una primitiva, y estos siempre se comparan por valor y no por referencia.
Si usted quiere hacer una comparación del valor de las dos fechas también hay una forma más oscura de hacer esto
var a = new Date(2010, 10, 10);
var b = new Date(2010, 10, 10);
alert(+a == +b); //true
En este caso el unario +
operador hace que el motor de javascript para llamar a los objetos valueOf
método - y entonces son dos primitivas las que se están comparando.
Este es un truco interesante, ¡gracias! – Art
No estoy seguro de que lo llamaría un truco realmente. –
Solo para estar seguro - Me refería a la declaración "+ a == + b". – Art