Nous souhaitons rendre ce projet open source disponible pour les gens du monde entier.

Aidez-nous à traduire le contenu de ce tutoriel dans votre langue!

retour au cours

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 :

  1. undefined (pas de mode strict)
  2. une erreur (mode strict)

Pourquoi ? Répétons ce qui se pase à la ligne (*):

  1. Lorsqu’on accède à une propiété de str, un “wrapper d’objet” (conteneur) est créé.
  2. En mode strict, l’écriture à l’intérieur est une erreur.
  3. 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.

Morty Proxy This is a proxified and sanitized view of the page, visit original site.