GeneratorFunction
åºçº¿
广æ³å¯ç¨
èª 2016å¹´9æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
GeneratorFunction 对象为çæå¨å½æ°æä¾äºæ¹æ³ãå¨ JavaScript ä¸ï¼æ¯ä¸ªçæå¨å½æ°å®é
ä¸é½æ¯ä¸ä¸ª GeneratorFunction 对象ã
请注æï¼GeneratorFunction 䏿¯å
¨å±å¯¹è±¡ãå¯ä»¥éè¿ä»¥ä¸ä»£ç æ¥è·åå®ï¼
const GeneratorFunction = function* () {}.constructor;
GeneratorFunction æ¯ Function çåç±»ã
å°è¯ä¸ä¸
const GeneratorFunction = function* () {}.constructor;
const foo = new GeneratorFunction(`
yield 'a';
yield 'b';
yield 'c';
`);
let str = "";
for (const val of foo()) {
str = str + val;
}
console.log(str);
// Expected output: "abc"
æé 彿°
GeneratorFunction()-
å建ä¸ä¸ªæ°ç
GeneratorFunction对象ã
å®ä¾å±æ§
ä¹ä»å
¶ç¶ç±» Function ç»§æ¿å®ä¾å±æ§ã
è¿äºå±æ§å®ä¹äº GeneratorFunction.prototype å¹¶ç±ææ GeneratorFunction å®ä¾æå
±äº«ã
GeneratorFunction.prototype.constructor-
å建å®ä¾å¯¹è±¡çæé 彿°ã对äº
GeneratorFunctionå®ä¾ï¼å ¶åå§å¼æ¯GeneratorFunctionæé 彿°ã GeneratorFunction.prototype.prototype-
ææçæå¨å½æ°å ±äº«åä¸ä¸ª
prototype屿§ï¼å³Generator.prototypeãæ¯ä¸ªçæå¨å½æ°å®ä¾ä¹æèªå·±çprototype屿§ãå½çæå¨å½æ°è¢«è°ç¨æ¶ï¼è¿åççæå¨å¯¹è±¡ä»çæå¨å½æ°ç»§æ¿prototype屿§ï¼èè¯¥å±æ§åç»§æ¿èªGeneratorFunction.prototype.prototypeã GeneratorFunction.prototype[Symbol.toStringTag]-
[Symbol.toStringTag]屿§çåå§å¼æ¯å符串"GeneratorFunction"ãè¯¥å±æ§è¢«Object.prototype.toString()使ç¨ã
å®ä¾æ¹æ³
ä»å
¶ç¶ç±» Function ç»§æ¿å®ä¾æ¹æ³ã
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-generatorfunction-objects> |