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 | |
|---|---|
| Écrivable | Oui |
| Énumérable | Non |
| Configurable | Non |
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 | |
|---|---|
| Écrivable | Non |
| Énumérable | Non |
| Configurable | Oui |
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.)
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é.
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.
Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-generatorfunction.prototype.prototype> |
| ECMAScript® 2026 Language Specification> # sec-generatorfunction-instances-prototype> |
Voir aussi
- La déclaration
function* - L'expression
function* - L'objet
AsyncGeneratorFunction - L'objet
GeneratorFunction - Héritage et chaîne de prototypes
- Itérateurs et générateurs