Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

GeneratorFunction : propriété prototype

La propriété prototype de GeneratorFunction.prototype est partagée par toutes les fonctions génératrices. Sa valeur est Generator.prototype. Chaque fonction génératrice créée avec la syntaxe function* ou le constructeur GeneratorFunction() possède aussi sa propre propriété prototype, dont le prototype est GeneratorFunction.prototype.prototype. Lorsque la fonction génératrice est appelée, sa propriété prototype devient le prototype de l'objet générateur retourné.

Valeur

Le même objet que Generator.prototype. GeneratorFunction.prototype.prototype est le nom techniquement plus précis, mais Generator.prototype correspond à l'intuition qu'il s'agit du prototype des objets générateurs.

Attributs de GeneratorFunction : propriété prototype
ÉcrivableOui
ÉnumérableNon
ConfigurableNon

La propriété prototype de chaque instance de GeneratorFunction est un objet vide sans propriétés, dont le prototype est GeneratorFunction.prototype.prototype. Elle possède les attributs de propriété suivants :

Attributs de GeneratorFunction : propriété prototype
ÉcrivableNon
ÉnumérableNon
ConfigurableOui

Description

Une instance de fonction génératrice possède deux propriétés prototype. La première est sa propre propriété prototype. La seconde est la propriété prototype de son prototype, qui est GeneratorFunction.prototype. (Rappelez-vous que chaque fonction génératrice est une instance de GeneratorFunction, donc elle a GeneratorFunction.prototype comme prototype.)

js
function* genFunc() {}
const GeneratorFunctionPrototype = Object.getPrototypeOf(genFunc);
console.log(Object.hasOwn(genFunc, "prototype")); // true
console.log(Object.hasOwn(GeneratorFunctionPrototype, "prototype")); // true

Lorsque la fonction génératrice est appelée, la propriété prototype de la fonction génératrice devient le prototype de l'objet générateur retourné.

js
const gen = genFunc();
const proto = Object.getPrototypeOf;
console.log(proto(gen) === genFunc.prototype); // true
console.log(proto(proto(gen)) === GeneratorFunctionPrototype.prototype); // true

Le diagramme suivant illustre la chaîne de prototypes d'une fonction génératrice et de ses instances. Chaque flèche creuse indique une relation d'héritage (c'est-à-dire un lien de prototype), et chaque flèche pleine indique une relation de propriété. Notez qu'il n'y a aucun moyen d'accéder à genFunc depuis gen — ils n'ont qu'une relation instanceof.

Le diagramme d'héritage des générateurs et des fonctions génératrices

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-generatorfunction.prototype.prototype
ECMAScript® 2026 Language Specification
# sec-generatorfunction-instances-prototype

Voir aussi