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,strnâ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.