Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La propriété constructor renvoie une référence à la fonction Object qui a créé le prototype de l'instance. La valeur de cette propriété est une référence à la fonction elle-même, ce n'est pas une chaîne de caractères représentant le nom de la fonction. Cette valeur est en lecture seule pour les valeurs de types primitifs comme 1, true et "test".
Tous les objets héritent d'une propriété constructor de leur prototype (à l'exception de ceux créés avec Object.create(null)). Les objets créés sans constructeur (c'est-à-dire avec des littéraux) auront le constructeur correspondant au type du littéral :
L'exemple ci-dessous crée un constructeur Arbre, et un objet de ce type, monArbre. Le script affiche ensuite la propriété constructor de l'objet monArbre :
Cet exemple produira le résultat suivant :
Dans l'exemple suivant, on illustre comment modifier la valeur d'un constructeur pour les objets génériques. Dans l'exemple suivant, seules les valeurs true, 1 et "test" ne seront pas affectées car leurs constructeurs sont en lecture seule uniquement. Cet exemple montre qu'il ne faut pas se reposer de façon aveugle sur la propriété constructor d'un objet.
L'exemple produira le résultat suivant :
La plupart du temps, cette propriété est utilisée afin de définir une fonction en tant que constructeur, c'est-à-dire qu'on l'appellera avec new et en « attachant » la chaîne de prototypes.
Pourquoi faut-il écrire cette dernière ligne ? Eh bien, ça dépend.
Essayons de définir les cas où il est nécessaire de réaffecter le constructeur original et les cas où c'est superflu.
Imaginons que l'objet possède une méthode create() qui lui permette de créer un autre exemplaire :
Dans l'exemple précédent, on a une exception car le constructeur pointe vers Parent.
Pour éviter cet écueil, il suffit d'affecter le bon constructeur (celui qui sera utilisé ensuite) :
Prenons un autre exemple :
Ici, il faudra conserverr le constructeur parent si on veut que le code fonctionne correctement.
En résumé, lorsqu'on paramètre manuellement le constructeur, on peut obtenir des résultats sources de confusion. La plupart du temps, la propriété constructor n'est pas utilisée et la réaffecter n'est pas nécessaire.
| ECMAScript® 2027 Language Specification # sec-object.prototype.constructor |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 3 août 2023 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.