Compreendendo a contradição: por que typeof Array com objetos retorna "Object"
Os desenvolvedores podem encontrar um fenômeno surpreendente: ao invocar typeof em um array contendo objetos, ele retorna inexplicavelmente "objeto" em vez de "matriz". Este artigo investiga esse comportamento aparentemente contraditório.
Examinando um exemplo, vamos ilustrar o 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
}
});
Embora console.dir(data) identifique corretamente a variável como um array, typeof data retorna incongruentemente "Object."
A explicação está na especificação peculiar do JavaScript, onde o operador typeof retorna o tipo da propriedade interna [[Class]] do objeto. No caso de arrays, sua propriedade [[Class]] é definida como "Array", mas quando cercada por objetos, a propriedade [[Class]] muda para "Object".
Para garantir uma verificação de tipo precisa , os desenvolvedores podem empregar várias abordagens:
Ao compreender essa peculiaridade e utilizar essas técnicas, os desenvolvedores podem lidar com matrizes de objetos de maneira eficaz em seu JavaScript código.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3