MDN déclare:
Primitive, valeur primitive
Une donnée qui n'est pas un objet et n'a aucune méthode. JavaScript a 5 types de données primitifs: chaîne, nombre, booléen, null, indéfini. À l'exception de null et undefined, toutes les valeurs primitives ont des équivalents d'objet qui s'ajustent autour des valeurs primitives, par exemple, un objet String s'emballe autour d'une primitive de chaîne. Toutes les primitives sont immuables.
Donc, lorsque nous appelons un "s".replace
ou "s".anything
est équivalent à new String("s").replace
et new String("s").anything
"s".anything
ce new String("s").anything
?
Non, les primitives à cordes n'ont pas de méthodes. Comme pour les primitives numériques, le temps d'exécution de JavaScript les favorise dans des objets "String" à part entière lorsqu'ils sont invités à le faire par des constructions comme:
var space = "hello there".indexOf(" ");
Dans certaines langues (eh bien, Java en particulier, mais je pense que le terme est d'usage commun), on dit que la langue "encode" les primitives dans leurs enveloppes d'objets, le cas échéant. Avec les chiffres, c'est un peu plus compliqué en raison des aléas de la grammaire symbolique; Vous ne pouvez pas simplement dire
var foo = 27.toLocaleString();
parce que le "." Ne sera pas interprété comme vous en auriez besoin; toutefois:
var foo = (27).toLocaleString();
Fonctionne bien. Avec des primitives de chaînes – et des booleans, pour cette matière – la grammaire n'est pas ambiguë, donc par exemple:
var foo = true.toString();
marchera.
La réponse techniquement correcte est "non".
La réponse du monde réel est "non, mais ça fonctionnera de toute façon". C'est parce que lorsque vous faites quelque chose comme
"s".replace()
L'interprète sait que vous voulez effectivement opérer sur la chaîne comme si vous l'aviez créée avec
var str = new String("s")
Et agit donc comme si vous aviez fait cela.