Citation de la spécification
15.4 Objets de type tableau
Les objets de type tableau accordent un traitement spécial à une certaine catégorie de noms de propriétés. Un nom de propriété P (sous la forme d'une valeur String) est un indice de tableau si et seulement si ToString(ToUint32(P)) est égal à P et ToUint32(P) n'est pas égal à 2^32-1. Une propriété dont le nom de propriété est un indice de tableau est également appelée un élément. Chaque objet Array possède une propriété length dont la valeur est toujours un nombre entier non négatif inférieur à 2^32. La valeur de la propriété length est numériquement supérieure au nom de chaque propriété dont le nom est un indice de tableau ; chaque fois qu'une propriété d'un objet Array est créée ou modifiée, les autres propriétés sont ajustées si nécessaire pour maintenir cet invariant. Plus précisément, chaque fois qu'une propriété dont le nom est un indice de tableau est ajoutée, la propriété length est modifiée, si nécessaire, pour être supérieure d'une unité à la valeur numérique de cet indice de tableau ; et chaque fois que la propriété length est modifiée, chaque propriété dont le nom est un indice de tableau et dont la valeur n'est pas inférieure à la nouvelle longueur est automatiquement supprimée. Cette contrainte s'applique uniquement aux propriétés propres d'un objet Array et n'est pas affectée par les propriétés de longueur ou d'indice de tableau qui peuvent être héritées de ses prototypes.
Et voici un tableau pour typeof
Pour ajouter un peu de contexte, il existe deux types de données en JavaScript :
-
Types de données primitives - Cela inclut null, undefined, string, boolean, number et object.
-
Types de données dérivées/Objets spéciaux - Il s'agit notamment des fonctions, des tableaux et des expressions régulières. Et oui, tous ces éléments sont dérivés du mot "Object" en JavaScript.
La structure d'un objet en JavaScript est similaire à celle d'un tableau associatif ou d'un dictionnaire dans la plupart des langages orientés objet, c'est-à-dire qu'il comporte un ensemble de paires clé-valeur.
Un tableau peut être considéré comme un objet possédant les propriétés/clés suivantes :
-
Longueur - Cette valeur peut être égale ou supérieure à 0 (non négatif).
-
Les indices du tableau . J'entends par là que "0", "1", "2", etc. sont toutes des propriétés de l'objet tableau.
J'espère que cela a permis de mieux comprendre pourquoi typeof Array renvoie un objet. A la vôtre !