Maison >interface Web >js tutoriel >Pourquoi `typeof` renvoie-t-il \'object\' pour les tableaux d'objets en JavaScript ?

Pourquoi `typeof` renvoie-t-il \'object\' pour les tableaux d'objets en JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 20:12:02928parcourir

Why does `typeof` return

Examen du comportement unique de JavaScript : pourquoi les tableaux d'objets renvoient "objet" au lieu de "tableau"

En JavaScript, un phénomène intrigant se produit lorsque vous travaillez avec des tableaux d'objets. Étonnamment, malgré leur nature de type tableau, ils sont classés comme objets lorsque l'opérateur typeof est utilisé. Cet écart peut être assez déroutant, en particulier dans des cas comme celui-ci :

$.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
    }
});​

Ce comportement découle d'une particularité de la spécification JavaScript qui considère les objets Array comme étant de type Object. Toutefois, cela n’implique pas que les tableaux et les objets soient interchangeables. Pour déterminer avec précision si une variable représente un tableau, utilisez les méthodes suivantes :

  • instanceof Array : Vérifie si une variable est une instance du constructeur Array.
  • Array.isArray(data) : Une méthode native spécialement conçue pour déterminer si une variable est un tableau.
  • Object.prototype.toString.call(data) == ' [object Array]' : Une approche fiable qui utilise la méthode toString du prototype Object.
  • jQuery.isArray(data) : Une option pratique pour les utilisateurs de jQuery.

En utilisant ces techniques, vous pouvez discerner avec précision si une variable est un tableau, même lorsqu'elle contient des objets, résolvant ainsi l'écart apparent entre son comportement de type tableau et la classification des objets.

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!

Déclaration:
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