Pouvons-nous ajouter une propiété à une primitive ?
importance: 5
Considérons le code suivant:
let str = "Hello";
str.test = 5;
alert(str.test);
Pensez-vous que ça va fonctionner ? Qu’est-ce qui sera affiché ?
Essayez de lancer :
let str = "Hello";
str.test = 5; // (*)
alert(str.test);
Selon que vous utilisiez use strict
ou non, le résultat peut être :
undefined
(pas de mode strict)- une erreur (mode strict)
Pourquoi ? Répétons ce qui se pase à la ligne (*)
:
- Lorsqu’on accède à une propiété de
str
, un “wrapper d’objet” (conteneur) est créé. - En mode strict, l’écriture à l’intérieur est une erreur.
- Sinon, l’opération avec la propriété est poursuivie, l’objet obtient la propriété
test
. Mais après cela, “l’objet wrapper” disparaît, de sorte que dans la dernière ligne,str
n’a aucune trace de la propriététest
.
Cet exemple montre clairement que les primitives ne sont pas des objets.
Ils ne peuvent pas stocker de données supplémentaires.