La perplejidad de la igualdad de objetos
A pesar de compartir características idénticas, dos objetos aparentemente idénticos siguen siendo desiguales en JavaScript. Este fenómeno ha dejado perplejos a muchos, dado el siguiente fragmento de código:
var a = {}; var b = {}; console.log(a==b); //returns false console.log(a===b); //returns false
Comprensión de los operadores de igualdad
La disparidad entre los resultados de los operadores de igualdad regulares (==) y estrictos (===) radica en la conversión de tipos . La igualdad regular realiza una conversión de tipos implícita, mientras que la igualdad estricta no. Sin embargo, en este caso, ambas variables son objetos, por lo que la conversión de tipos es irrelevante.
Identidad del objeto
Las comparaciones de objetos se evalúan como verdaderas solo cuando se compara la misma referencia de objeto. independientemente del operador de igualdad utilizado. En otras palabras, a == a, a == b (si b es un alias de a), pero a != c (si c es un objeto diferente).
Implicaciones
Este comportamiento único tiene implicaciones para la programación orientada a objetos. Dos objetos con propiedades idénticas pero referencias diferentes se consideran desiguales, incluso si representan la misma entidad del mundo real.
Por ejemplo, en una base de datos, dos objetos que representan a la misma persona con el mismo nombre, dirección y El número de teléfono no se considerará igual, ya que tienen diferentes referencias de objeto. Esto puede generar resultados confusos al realizar comparaciones de objetos.
Soluciones
Si es necesario comparar las propiedades de dos objetos, considere usar una biblioteca de terceros o implementar una función de comparación personalizada que verifica cada propiedad individualmente.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3