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 | |
---|---|
Schreibbar | ja |
Aufzählbar | nein |
Konfigurierbar | nein |
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 | |
---|---|
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, nämlich GeneratorFunction.prototype
. (Denken Sie daran, dass jede Generatorfunktion eine Instanz von GeneratorFunction
ist, also hat sie GeneratorFunction.prototype
als ihren Prototyp.)
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.
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.
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-generatorfunction.prototype.prototype |
ECMAScript Language Specification # sec-generatorfunction-instances-prototype |