Sujet : Re: Indexation des tableaux en js
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.comp.lang.javascriptDate : 10. Nov 2024, 22:27:58
Autres entêtes
Organisation : There's no cabale
Message-ID : <vgr8gu$3188$1@cabale.usenet-fr.net>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4
Le 10/11/2024 13:50, Thomas Alexandre a écrit :
Le Sun, 10 Nov 2024 12:22:48 +0100, Olivier Miakinen a écrit :
<https://tc39.es/ecma262/#sec-object-type>
Ce que je comprends de tout ça, c'est qu'un Array est un objet «
exotique »,
et que comme tous ces types d'objets il a des propriétés dont le nom est
soit un symbole (par exemple « null » ou « true »), soit une chaîne de
caractères.
De ce que j'en comprends, un Array est un objet exotique parce qu'il peut
avoir *et* des index (entiers, de 0 à 2^32-2) *et* des propriétés (c'est ça
qui le rend exotique).
Je n'avais pas compris ça, mais à la relecture il est bien possible que tu aies
raison.
[...]
Et si par exemple on a un index égal à 1 000 000 alors c'est
comme si on avait vraiment réservé une taille mémoire de 1 000 001
objets dont les premiers emplacements sont vides.
Ah je ne pense pas. À mon avis, l'index 1 000 000 est juste un indice (et
donc juste *une* prop) et les autres indices sont justes ignorés (ie: ne
sont pas alloués en mémoire et sont considérés comme undefined).
Mais là il me semble que nous disons en fait la même chose.
Le « comme si » dans ma phrase, est du point de vue de l'utilisateur. Par
exemple, s'il a défini une entrée à l'index 3 et une entrée à l'index 12
et qu'ensuite il définit une nouvelle entrée à l'index 7, alors de son point
de vue a[7] sera compris entre a[3] et a[12], donc « comme si » ces entrées
étaient ordonnées de façon séquentielle en mémoire.
Mais bien sûr, en interne, il y a seulement des propriétés dont la clé est
respectivement la chaine '3', la chaine '12' et la chaine '7'.
-- Olivier Miakinen