GeneratorFunction.prototype.prototype

Die prototype-Eigenschaft von GeneratorFunction.prototype wird von allen Generatorfunktionen geteilt. Ihr Wert ist Generator.prototype. Jede mit der function*-Syntax oder dem GeneratorFunction()-Konstruktor erstellte Generatorfunktion hat auch ihre eigene prototype-Eigenschaft, deren Prototyp GeneratorFunction.prototype.prototype ist. Wenn die Generatorfunktion aufgerufen wird, wird ihre prototype-Eigenschaft zum Prototyp des zurückgegebenen Generator-Objekts.

Wert

Dasselbe Objekt wie Generator.prototype. GeneratorFunction.prototype.prototype ist der technisch genauere Name, aber Generator.prototype spricht die Intuition an, dass es der Prototyp von Generator-Objekten ist.

Eigenschaften von GeneratorFunction.prototype.prototype
Schreibbarja
Aufzählbarnein
Konfigurierbarnein

Die prototype-Eigenschaft jeder Instanz von GeneratorFunction ist ein leeres Objekt ohne Eigenschaften, dessen Prototyp GeneratorFunction.prototype.prototype ist. Es hat die folgenden Eigenschaften:

Eigenschaften von GeneratorFunction.prototype.prototype
Schreibbarnein
Aufzählbarnein
Konfigurierbarja

Beschreibung

Eine Generatorfunktion-Instanz hat zwei prototype-Eigenschaften. Die erste ist ihre eigene prototype-Eigenschaft. Die zweite ist die prototype-Eigenschaft auf ihrem Prototyp, nämlich GeneratorFunction.prototype. (Denken Sie daran, dass jede Generatorfunktion eine Instanz von GeneratorFunction ist, also hat sie GeneratorFunction.prototype als ihren Prototyp.)

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

Wenn eine Generatorfunktion aufgerufen wird, wird die prototype-Eigenschaft der Generatorfunktion zum Prototyp des zurückgegebenen Generator-Objekts.

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

Das folgende Diagramm veranschaulicht die Prototypenkette einer Generatorfunktion und ihrer Instanzen. Jeder hohle Pfeil zeigt eine Vererbungsbeziehung (d.h. ein Prototyp-Link) an, und jeder feste Pfeil zeigt eine Eigenschaftsbeziehung an. Beachten Sie, dass es keinen Weg gibt, von gen auf genFunc zuzugreifen – sie haben nur eine instanceof-Beziehung.

Das Vererbungsdiagramm von Generatoren und Generatorfunktionen

Spezifikationen

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

Siehe auch