"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué `typeof` devuelve \"Objeto\" para matrices que contienen objetos en JavaScript?

¿Por qué `typeof` devuelve \"Objeto\" para matrices que contienen objetos en JavaScript?

Publicado el 2024-11-08
Navegar:310

Why Does `typeof` Return \

Comprender la contradicción: por qué typeof Array con objetos devuelve "Objeto"

Los desarrolladores pueden encontrar un fenómeno sorprendente: al invocar typeof en un array Al contener objetos, inexplicablemente devuelve "objeto" en lugar de "matriz". Este artículo profundiza en este comportamiento aparentemente contradictorio.

Al examinar un ejemplo, ilustremos el problema:

$.ajax({
    url: 'http://api.twitter.com/1/statuses/user_timeline.json',
    data: { screen_name: 'mick__romney'},
    dataType: 'jsonp',
    success: function(data) {
        console.dir(data); //Array[20]
        alert(typeof data); //Object
    }
});

Aunque console.dir(data) identifica correctamente la variable como una matriz, typeof data devuelve incongruentemente "Objeto".

La explicación radica en la peculiar especificación de JavaScript, donde el operador typeof devuelve el tipo de propiedad interna [[Clase]] del objeto. En el caso de matrices, su propiedad [[Clase]] se establece en "Matriz", pero cuando están rodeadas de objetos, la propiedad [[Clase]] cambia a "Objeto".

Para garantizar una verificación de tipos precisa , los desarrolladores pueden emplear varios enfoques:

  • instancia de datos de Array: comprueba si la variable es una instancia del tipo Array.
  • Array.isArray(data): un método diseñado específicamente para determinar si un objeto es una matriz.
  • Object.prototype.toString.call(data) == '[object Array]': un método confiable y ampliamente aceptado para la detección de matrices.
  • $.isArray(data): una función específica de jQuery diseñada para buscar matrices.

Al comprender esta peculiaridad y utilizar estas técnicas, los desarrolladores pueden manejar eficazmente matrices de objetos en su código JavaScript.

Último tutorial Más>

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