Ne soyez pas mystifié par le fait que les littéraux chaîne, nombre et booléen peuvent être traités comme un objet avec des propriétés (par exemple,., true.toString ()
). Lorsque ces valeurs primitives sont traitées comme des objets en tentant d'accéder à leurs propriétés, JavaScript crée un objet wrapper à partir du constructeur associé à la primitive, afin de permettre l'accès aux propriétés et aux méthodes de l'objet wrapper..
Une fois que les propriétés ont été accédées, l'objet wrapper est supprimé. Cette conversion nous permet d’écrire du code qui donnerait l’impression qu’une valeur primitive était en fait un objet. À vrai dire, lorsqu'il est traité comme un objet dans le code, JavaScript le convertit en objet afin que l'accès aux propriétés fonctionne, puis le reconvertit en valeur primitive une fois qu'une valeur est renvoyée. La chose clé à noter ici est ce qui se passe, et que JavaScript le fait pour vous dans les coulisses.
Voici quelques exemples pour illustrer ce dont je parle:
Échantillon de chaîne: sample56.html
Nombre Échantillon: sample57.html
Exemple booléen: sample58.html
Lorsque vous accédez directement à une propriété sur un nombre primitif (non stocké dans une variable), vous devez d’abord évaluer le nombre avant que la valeur ne soit traitée comme un objet (par exemple,., (1) .toString ();
ou 1… toString ();
). Pourquoi deux points? Le premier point est considéré comme une décimale numérique et non comme un opérateur pour accéder aux propriétés de l'objet..
Les valeurs littérales / primitives représentant une chaîne, un nombre ou une valeur booléenne sont plus rapides à écrire et plus concises dans la forme littérale..
Vous devriez utiliser la valeur littérale à cause de cela. De plus, la précision de la Type de
L'opérateur dépend de la manière dont vous créez la valeur (invocation littérale ou constructeur). Si vous créez un objet chaîne, numérique ou booléen, le Type de
l'opérateur signale le type en tant qu'objet. Si vous utilisez des littéraux, le Type de
l'opérateur renvoie un nom de chaîne du type de valeur réelle (par exemple,., typeof 'foo' // retourne 'chaîne'
).
Je démontre ce fait dans le code suivant.
Échantillon: sample59.html
Si votre programme dépend de la Type de
opérateur pour identifier la chaîne, le nombre ou les valeurs booléennes en fonction de ces types primitifs, vous devez éviter la Chaîne
, Nombre
, et Booléen
constructeurs.