Aller au contenu

Opérateur new en JavaScript

Introduction aux constructeurs et à l'opérateur new

En JavaScript, les constructeurs sont des fonctions conçues pour initialiser les objets nouvellement créés. Ils jouent un rôle central dans la programmation orientée objet en permettant aux développeurs de définir les propriétés et comportements que doivent posséder les objets d'une certaine classe. L'opérateur new est utilisé pour créer une instance d'un objet à partir d'une fonction constructeur, en mettant en place un nouvel environnement d'objet basé sur le prototype spécifié et en exécutant le constructeur pour initialiser le nouvel objet.

Fonctionnement des constructeurs

Une fonction constructeur en JavaScript ressemble à toute autre fonction, mais elle est conventionnellement nommée avec une majuscule pour la distinguer des fonctions régulières. Lorsque l'opérateur new invoque une fonction constructeur, plusieurs choses se produisent :

  1. Création d'un nouvel objet : JavaScript crée automatiquement un nouvel objet pour vous.
  2. Définition du prototype : Cet nouvel objet est configuré pour suivre un modèle, qui est le prototype de la fonction constructeur. Cela signifie qu'il hérite des propriétés et méthodes définies à cet endroit.
  3. Exécution du constructeur : La fonction constructeur s'exécute avec les arguments que vous passez, et à l'intérieur de cette fonction, this fait référence au nouvel objet qui vient d'être créé.
  4. Retour de l'objet : Après avoir accompli sa tâche, le nouvel objet est automatiquement retourné, sauf si vous retournez explicitement un objet différent depuis le constructeur.

INFO

Le JavaScript moderne utilise la syntaxe class pour définir les constructeurs et les méthodes de manière plus intuitive. Cela offre une approche plus simple, basée sur les classes, similaire à d'autres langages de programmation.

Exemple : fonction constructeur de base


Output appears here after Run.

Explication : Dans cet exemple, User est une fonction constructeur qui initialise name, age et une méthode greet sur les objets nouvellement créés. L'instruction new User('John', 30) crée une nouvelle instance de User avec le nom « John » et l'âge 30.

Utilisation des constructeurs pour des objets complexes

Les constructeurs peuvent être utilisés pour établir des relations plus complexes entre les objets, y compris des méthodes qui interagissent avec d'autres propriétés des objets.

Exemple : constructeur avec des méthodes


Output appears here after Run.

Explication : Le constructeur Car configure chaque objet voiture avec des propriétés spécifiques et une méthode qui affiche des informations sur la voiture.

Exemple : méthodes de prototype


Output appears here after Run.

Explication : En ajoutant introduce au prototype de Employee, toutes les instances partagent la même méthode, ce qui est plus économe en mémoire que de la définir directement dans le constructeur.

WARNING

Il est recommandé d'utiliser les classes ES6 pour définir les objets et les constructeurs afin d'obtenir un code plus propre et plus lisible.

Bonnes pratiques avec les constructeurs

Lorsque vous travaillez avec des constructeurs en JavaScript, le respect de certaines bonnes pratiques peut grandement améliorer la lisibilité, l'efficacité et l'évolutivité de votre code. Ci-dessous, ces pratiques sont détaillées avec des exemples et des explications :

1. Convention de nommage

Bonne pratique : Commencez toujours les noms des constructeurs par une majuscule pour les différencier des fonctions régulières. Il s'agit d'une convention courante en JavaScript et dans de nombreux autres langages de programmation qui aide les développeurs à identifier rapidement les fonctions constructeurs.

Exemple :


Output appears here after Run.

Explication : La fonction constructeur Laptop commence par une majuscule, indiquant qu'elle est destinée à être utilisée avec l'opérateur new pour créer de nouveaux objets.

2. Séparation de la logique

Bonne pratique : Pour les méthodes qui n'ont pas besoin d'accéder aux données d'instance individuelles, définissez-les sur le prototype du constructeur plutôt que dans le constructeur lui-même. Cette approche permet d'économiser de la mémoire car toutes les instances partagent la même méthode au lieu que chaque instance crée une nouvelle fonction en mémoire.

Exemple :


Output appears here after Run.

Explication : La méthode describe est ajoutée au prototype de Book, ce qui signifie que toutes les instances de Book partagent la même méthode describe. Cela est plus efficace que si describe était définie à l'intérieur du constructeur, ce qui résulterait en une nouvelle fonction pour chaque instance de livre.

3. Valeurs de retour

Bonne pratique : Évitez de retourner des valeurs depuis les constructeurs. Les constructeurs JavaScript retournent automatiquement l'instance d'objet nouvellement créée, sauf si vous retournez explicitement un objet différent. Le retour de valeurs non-objets (comme une chaîne ou un nombre) n'aura aucun effet, et la nouvelle instance sera tout de même retournée.

Exemple :


Output appears here after Run.

Explication : Malgré la tentative de retourner une chaîne depuis le constructeur Player, JavaScript ignore cette valeur de retour car il ne s'agit pas d'un objet. La nouvelle instance Player est retournée comme prévu.

Conclusion

Comprendre et utiliser les constructeurs et l'opérateur new en JavaScript est essentiel pour une programmation orientée objet efficace. En suivant les conventions et bonnes pratiques décrites ici, les développeurs peuvent créer un code organisé, efficace et évolutif. Les constructeurs offrent un mécanisme puissant pour initialiser de nouveaux objets et définir leur comportement de manière structurée et intuitive.

Pratique

Que se passe-t-il lorsqu'une fonction est exécutée avec 'new' en JavaScript ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.