Maison > interface Web > js tutoriel > le corps du texte

Pourquoi `typeof` renvoie-t-il \'Object\' pour les tableaux contenant des objets en JavaScript ?

Linda Hamilton
Libérer: 2024-11-03 12:26:29
original
841 Les gens l'ont consulté

Why Does `typeof` Return

Comprendre la contradiction : pourquoi typeof Array avec des objets renvoie "Object"

Les développeurs peuvent rencontrer un phénomène surprenant : lors de l'invocation de typeof sur un tableau contenant des objets, il renvoie inexplicablement « objet » au lieu de « tableau ». Cet article se penche sur ce comportement apparemment contradictoire.

En examinant un exemple, illustrons le problème :

<code class="javascript">$.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
    }
});</code>
Copier après la connexion

Bien que console.dir(data) identifie correctement la variable en tant que tableau, typeof data renvoie de manière incongrue "Objet".

L'explication réside dans la spécification particulière de JavaScript, où l'opérateur typeof renvoie le type de la propriété [[Class]] interne de l'objet. Dans le cas des tableaux, leur propriété [[Class]] est définie sur "Array", mais lorsqu'elle est entourée d'objets, la propriété [[Class]] devient "Object".

Pour garantir une vérification de type précise , les développeurs peuvent utiliser différentes approches :

  • data instanceof Array : vérifie si la variable est une instance du type Array.
  • Array.isArray(data) : une méthode spécialement conçue pour déterminer si un objet est un tableau.
  • Object.prototype.toString.call(data) == '[object Array]' : une méthode fiable et largement acceptée pour la détection de tableaux.
  • $ .isArray(data) : une fonction spécifique à jQuery conçue pour vérifier les tableaux.

En comprenant cette particularité et en utilisant ces techniques, les développeurs peuvent gérer efficacement des tableaux d'objets dans leur code JavaScript.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal