GeneratorFunction.prototype.prototype
Die prototype-Eigenschaft von GeneratorFunction.prototype wird von allen Generatorfunktionen geteilt. Ihr Wert ist Generator.prototype. Jede Generatorfunktion, die mit der function*-Syntax oder dem GeneratorFunction()-Konstruktor erstellt wird, 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 Generatorobjekts.
Wert
Dasselbe Objekt wie Generator.prototype. GeneratorFunction.prototype.prototype ist der technisch genauere Name, aber Generator.prototype entspricht mehr der Intuition, dass es sich um den Prototyp von Generatorobjekten handelt.
Eigenschaften von GeneratorFunction.prototype.prototype | |
|---|---|
| Schreibbar | ja |
| Aufzählbar | nein |
| Konfigurierbar | nein |
Die prototype-Eigenschaft jeder GeneratorFunction-Instanz ist ein leeres Objekt ohne Eigenschaften, dessen Prototyp GeneratorFunction.prototype.prototype ist. Sie hat die folgenden Eigenschaftsattribute:
Eigenschaften von GeneratorFunction.prototype.prototype | |
|---|---|
| Schreibbar | nein |
| Aufzählbar | nein |
| Konfigurierbar | ja |
Beschreibung
Eine Generatorfunktion-Instanz hat zwei prototype-Eigenschaften. Die erste ist ihre eigene prototype-Eigenschaft. Die zweite ist die prototype-Eigenschaft auf ihrem Prototyp, welcher GeneratorFunction.prototype ist. (Denken Sie daran, dass jede Generatorfunktion eine Instanz von GeneratorFunction ist und daher GeneratorFunction.prototype als Prototyp hat.)
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 Generatorobjekts.
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 Prototyp-Kette einer Generatorfunktion und ihrer Instanzen. Jeder hohle Pfeil zeigt eine Vererbungsbeziehung (d.h. eine Prototyp-Verbindung) an, und jeder volle Pfeil zeigt eine Eigenschaftsbeziehung an. Beachten Sie, dass es keine Möglichkeit gibt, von gen auf genFunc zuzugreifen — sie haben nur eine instanceof-Beziehung.
Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-generatorfunction.prototype.prototype> |
| ECMAScript® 2026 Language Specification> # sec-generatorfunction-instances-prototype> |