Sujet : Re: Indexation des tableaux en js
De : none (at) *nospam* no.invalid (Thomas Alexandre)
Groupes : fr.comp.lang.javascriptDate : 10. Nov 2024, 13:50:53
Autres entêtes
Organisation : 🍿🍺
Message-ID : <6730ac2d$0$539$426a34cc@news.free.fr>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14
User-Agent : Pan/0.160 (Toresk; )
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).
```js
a = [1,2,3]
console.log(a, a.length)
a.toto = 42
a.titi = 43
console.log(a, a['toto'], a['titi'], a.length)
console.log(Object.keys(a))
```
donne un tableau de longueur 3 même si on lui ajoute des props.
Il se comporte comme un Array classique avec des index entiers positifs et
comme un objet avec des props.
Parce qu'en vrai, sous le capot, les indices *sont* des prop (ordonnées).
J'en comprends aussi qu'il peut avoir au maximum 2^53 propriétés, mais
que si l'une de ces propriétés a comme nom une chaine de caractères
représentant un nombre entier entre 0 et 2^32-2, alors elle est
considérée comme un index numérique et bénéficie alors d'un traitement
particulier, comme s'il s'agissait vraiment d'un tableau indexé par des
entiers.
Yep.
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).
-- "Ce qu'il faut au fond pour obtenir une espèce de paix avec les hommes,(...) c'est leur permettre en toutes circonstances, de s'étaler, de sevautrer parmi les vantardises niaises. Il n'y a pas de vanitéintelligente. C'est un instinct." - Céline