Méthodes JavaScript des Primitives

En JavaScript, il est possible de travailler avec des primitives (nombres, chaînes, et plus), comme s'ils étaient des objets.

Mais, bien sûr, il existe des différences notables entre les objets et les primitives.

Donc, une primitive est une valeur de type primitif. Sept types de primitives existent, parmi eux : nombre, bigint, symbole, chaîne, booléen, null et undefined. Un objet peut stocker plusieurs valeurs comme propriétés. Vous pouvez créer un objet en utilisant {}. Par exemple:

{
  name: "Chevrolet",
  model: "Camaro",
  price: 40000
}

D'autres types d'objets existent également en JavaScript. Par exemple, les fonctions sont également considérées comme des objets.

L'un des avantages les plus significatifs des objets est qu'une fonction peut être stockée comme l'une de ses propriétés.

Par exemple:

Javascript object's function properties
let site = { name: "W3Docs", welcome: function () { console.log("Welcome to W3Docs!"); } }; site.welcome(); // Welcome to W3Docs!

Il existe aussi de nombreux objets intégrés. Par exemple, ceux qui travaillent avec des erreurs, des dates, des éléments HTML, et plus encore. Ils incluent différentes méthodes et propriétés.

Mais, notez que les objets nécessitent des ressources supplémentaires pour supporter la machinerie interne.

Une Primitive comme un Objet

Voici le paradoxe de JavaScript:

  • On aimerait faire beaucoup de choses avec des primitives comme les chaînes et les nombres. Y accéder comme des méthodes serait une bonne chose.
  • Les primitives doivent être à la fois légères et rapides.

Et voici la solution, qui peut sembler un peu maladroite:

  • Les primitives restent des primitives. Une valeur simple, comme souhaité.
  • Dans le langage, vous avez accès aux propriétés et méthodes des chaînes, des symboles, des booléens et des nombres.
  • Pour forcer ce travail, un unique “wrapper d'objet”, qui fournit des fonctionnalités supplémentaires est généré, puis est détruit.

Chaque type de primitive a son propre “wrapper d'objet” appelé: Number, Boolean, String, Symbol. Ils fournissent divers ensembles de méthodes. Par exemple, il y a une méthode de chaîne str.toUpperCase(), qui renvoie un str en majuscules.

Ça fonctionne de cette façon:

Javascript string toUpperCase method
let str = "Welcome to W3Docs"; console.log(str.toUpperCase()); // WELCOME TO W3DOCS

Maintenant, voyons ce qui se passe dans str.toUpperCase():

  • str est une primitive. Un objet unique est créé au moment d'accéder à sa propriété. Cet objet connaît la valeur de la chaîne et a des méthodes utiles, comme toUpperCase().
  • Cette méthode est capable de s'exécuter et de renvoyer une toute nouvelle chaîne (c'est montré par console.log).
  • L'objet spécial est détruit, et la primitive str est laissée seule.

On peut supposer que les primitives fournissent des méthodes, mais restent légères en même temps.

Il est important de noter que JavaScript améliore grandement ce processus. De plus, la création d'un objet supplémentaire peut être évitée. Quoi qu'il en soit, il faut toujours se conformer à la spécification se comportant comme si elle en générait un.

Un nombre a ses méthodes. Jetons un coup d'œil à cet exemple:

Javascript numbers method
let num = 1.23456; console.log(num.toFixed(3)); // 1.235

Ici, toFixed(n) arrondit le nombre à une précision particulière.

Par exemple:

Javascript numbers methods
let num = 1.23456; console.log(num.toFixed(2)); // 1.23

Notez que vous pouvez utiliser les constructeurs String/Number/Boolean uniquement en interne.

Comme certaines autres langues, comme Java, donnent la possibilité de créer des “wrapper d'objets” pour les primitives avec la syntaxe suivante:

new Number(1);
or
new Boolean(false);

Théoriquement, c'est possible en JavaScript aussi, mais nous ne vous le recommandons pas. Cela pourrait apporter des résultats indésirables. Par exemple:

Javascript numbers methods
console.log(typeof 0); // "number" console.log(typeof new Number(0)); // "object"

Dans if, les objets sont toujours vrais. Ici, l'alerte montrera ce qui suit:

Javascript numbers methods
let zero = new Number(0); if (zero) { // zero is true, because it's an object console.log("In this case, zero is truthy!"); }

Une autre chose utile est d'utiliser les mêmes fonctions String/Number/Booleansans new. Avec leur aide, la valeur est convertie en une chaîne, un number et un booléen.

Voici un exemple:

Javascript numbers methods
let num = Number("12"); // convert a string to number console.log(typeof num);

Résumé

Une primitive a une gamme de méthodes utiles (sauf null et undefined). Ces méthodes opèrent via des objets temporaires. Les moteurs de JavaScript sont correctement réglés pour améliorer cela en interne. Par conséquent, il n'est pas coûteux d'appeler.

Heure du Quiz : Testez Vos Compétences!

Prêt à relever le défi de ce que vous avez appris ? Plongez dans nos quiz interactifs pour approfondir votre compréhension et renforcer vos connaissances de manière ludique.

Trouvez-vous cela utile?