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.
La propriété de données prototype d'une instance de Function est utilisée lorsque la fonction est utilisée comme constructeur avec l'opérateur new. Elle deviendra le prototype du nouvel objet.
Note : Tous les objets Function n'ont pas la propriété prototype — voir la description.
Un objet.
| Écrivable | Oui |
| Énumérable | Non |
| Configurable | Non |
Note : Les classes sont un type de fonction, donc la plupart de la description ici s'applique également à la propriété prototype des classes. La seule différence notable est que la propriété prototype d'une classe n'est pas modifiable.
Lorsque une fonction est appelée avec new, la propriété prototype du constructeur devient le prototype de l'objet résultant.
Vous pouvez lire Héritage et chaîne de prototypes pour plus d'informations sur les interactions entre la propriété prototype d'une fonction constructeur et le prototype de l'objet résultant.
Une fonction ayant une propriété prototype n'est pas suffisante pour qu'elle soit éligible en tant que constructeur. Les fonctions génératrices ont une propriété prototype, mais ne peuvent pas être appelées avec new :
Au lieu de cela, la propriété prototype des fonctions génératrices est utilisée lorsqu'elles sont appelées sans new. La propriété prototype deviendra le prototype de l'objet Generator retourné.
De plus, certaines fonctions peuvent avoir une propriété prototype mais lancer une exception de manière inconditionnelle lorsqu'elles sont appelées avec new. Par exemple, les fonctions Symbol() et BigInt() lancent une exception lorsqu'elles sont appelées avec new, car Symbol.prototype et BigInt.prototype sont uniquement destinés à fournir des méthodes pour les valeurs primitives, mais les objets wrapper ne doivent pas être construits directement.
Les fonctions suivantes n'ont pas de prototype et ne sont donc pas éligibles en tant que constructeurs, même si une propriété prototype est ultérieurement assignée manuellement :
Les constructeurs valides suivants ont une propriété prototype :
Une fonction liée n'a pas de propriété prototype, mais peut être constructible. Lorsqu'elle est construite, la fonction cible est construite à la place, et si la fonction cible est constructible, elle retournerait une instance normale.
La propriété prototype d'une fonction, par défaut, est un objet simple avec une propriété : constructor, qui est une référence à la fonction elle-même. La propriété constructor est modifiable, non énumérable et configurable.
Si la propriété prototype d'une fonction est réassignée avec autre chose qu'un Object, lorsque la fonction est appelée avec new, le prototype de l'objet retourné sera Object.prototype à la place. (En d'autres termes, new ignore la propriété prototype et construit un objet simple.)
Champs de classe ajoutent des propriétés à chaque instance. Les méthodes de classe déclarent des propriétés fonction sur le prototype. Cependant, il n'y a aucun moyen d'ajouter une propriété non fonctionnelle au prototype. Si vous souhaitez partager des données statiques entre toutes les instances (par exemple, Error.prototype.name est le même pour toutes les instances d'erreur), vous pouvez l'assigner manuellement sur le prototype d'une classe.
Cela peut être rendu plus ergonomique en utilisant des blocs d'initialisation statiques, qui sont appelés lorsque la classe est initialisée.
| ECMAScript® 2027 Language Specification # sec-function-instances-prototype |
Cette page a été modifiée le 25 févr. 2026 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.