SharedArrayBuffer[Symbol.species]
åºçº¿
广æ³å¯ç¨
èª 2021å¹´12æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
SharedArrayBuffer[Symbol.species] éæè®¿é®å¨å±æ§è¿åç¨äºæé SharedArrayBuffer æ¹æ³è¿åå¼çæé 彿°ã
è¦åï¼[Symbol.species] çåå¨å
许任æä»£ç çæ§è¡ï¼è¿å¯è½å¯¼è´å®å
¨æ¼æ´ãå®è¿ä½¿æäºä¼åå徿´å å°é¾ã弿å®ç°è
æ£å¨è°æ¥æ¯å¦è¦ç§»é¤æ¤ç¹æ§ã妿å¯è½ï¼è¯·é¿å
ä¾èµå®ã
è¯æ³
SharedArrayBuffer[Symbol.species]
è¿åå¼
è°ç¨ get [Symbol.species] æé 彿°ï¼thisï¼çå¼ãè¿åå¼ç¨äºæé åå»ºæ°æ°ç»ç¼å²åºçæ°ç»ç¼å²åºæ¹æ³çè¿åå¼ã
æè¿°
[Symbol.species] 访é®å¨å±æ§è¿å SharedArrayBuffer 对象çæé 彿°ãåç±»æé 彿°å¯ä»¥éå宿¥æ¹åæé 彿°èµå¼ãé»è®¤å®ç°å¤§æ¦æ¯ï¼
// ç¨äºè¯´æèå设çåºå±å®ç°
class SharedArrayBuffer {
static get [Symbol.species]() {
return this;
}
}
ç±äºè¿ç§å¤æå®ç°ï¼é»è®¤æ
åµä¸ï¼æ´¾çåç±»ç [Symbol.species] ä¹ä¼è¿åèªèº«çæé 彿°ã
class SubArrayBuffer extends SharedArrayBuffer {}
SubArrayBuffer[Symbol.species] === SharedArrayBuffer; // true
å¨è°ç¨ä¸ä¼æ´æ¹ç°ææ°ç»ï¼èæ¯è¿åä¸ä¸ªæ°çæ°ç»ç¼å²å®ä¾çæ¹æ³ï¼ä¾å¦ï¼slice()ï¼æ¶ï¼è¯¥æ°ç»ç constructor[Symbol.species] ä¼è¢«è®¿é®ãè¿åçæé 彿°å°è¢«ç¨äºæé 该æ°ç»ç¼å²åºæ¹æ³çè¿åå¼ã
示ä¾
>æ®é对象ä¸ç species
[Symbol.species] 屿§è¿åé»è®¤çæé 彿°ï¼å³ SharedArrayBuffer çæé 彿° SharedArrayBufferã
SharedArrayBuffer[Symbol.species]; // function SharedArrayBuffer()
æ´¾ç对象ä¸ç species
å¨èªå®ä¹ç SharedArrayBuffer åç±»å®ä¾ä¸ï¼ä¾å¦ MySharedArrayBufferï¼MySharedArrayBuffer ç species æ¯ MySharedArrayBuffer æé 彿°ã使¯ï¼ä½ å¯è½å¸æéåå®ï¼ä»¥ä¾¿å¨æ´¾çç±»æ¹æ³ä¸è¿åç¶ç±» SharedArrayBuffer 对象ï¼
class MySharedArrayBuffer extends SharedArrayBuffer {
// éå MySharedArrayBuffer species æ¥è¿åç¶ç±» SharedArrayBuffer æé 彿°
static get [Symbol.species]() {
return SharedArrayBuffer;
}
}
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-sharedarraybuffer-%symbol.species%> |