Baseline Widely available
Symbol.species
ã¯éçãã¼ã¿ããããã£ã§ãã¦ã§ã«ãã¦ã³ã·ã³ãã«ã§ãã Symbol.species
ã表ãã¾ãããªãã¸ã§ã¯ãã®ã³ãã¼ã使ããã¡ã½ããã¯ããã®ã·ã³ãã«ã§ãã³ãã¼ã使ããã¨ãã«ä½¿ç¨ããã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ãæ¢ããã¨ãããã¾ãã
è¦å: [Symbol.species]
ãåå¨ãããã¨ã§ãä»»æã®ã³ã¼ãã®å®è¡ãå¯è½ã«ããã»ãã¥ãªãã£ã®èå¼±æ§ãçã¿åºãå¯è½æ§ãããã¾ããã¾ããä¸é¨ã®æé©åãã¨ã¦ãé£ãããªãã¾ããã¨ã³ã¸ã³ã®å®è£
è
ã¯ãã®æ©è½ãåé¤ãããã©ããã調æ»ãã¦ãã¾ããå¯è½ã§ããã°ããã®æ©è½ã¸ã®ä¾åã¯é¿ãã¦ãã ããã
class Array1 extends Array {
static get [Symbol.species]() {
return Array;
}
}
const a = new Array1(1, 2, 3);
const mapped = a.map((x) => x * x);
console.log(mapped instanceof Array1);
// Expected output: false
console.log(mapped instanceof Array);
// Expected output: true
å¤
ã¦ã§ã«ãã¦ã³ã·ã³ãã« Symbol.species
ã§ãã
[Symbol.species]
ã¢ã¯ã»ãµã¼ããããã£ã使ç¨ããã¨ããµãã¯ã©ã¹ããªãã¸ã§ã¯ãã®æ¢å®ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ããªã¼ãã¼ã©ã¤ãã§ããããã«ãªãã¾ããããã¯ãã¤ã³ã¹ã¿ã³ã¹ãã³ãã¼ããã¨ãã®æé ãæå®ãã¾ããä¾ãã°ãmap()
ã®ãããªé
åã®ã³ãã¼ã¡ã½ããã使ç¨ããå ´åãmap()
ã¡ã½ãã㯠instance.constructor[Symbol.species]
ã使ç¨ãã¦æ°ããé
åãæ§ç¯ããã³ã³ã¹ãã©ã¯ã¿ã¼ãåå¾ãã¾ãã詳細ã«ã¤ãã¦ã¯ãçµã¿è¾¼ã¿ãªãã¸ã§ã¯ãã®ãµãã¯ã©ã¹åãåç
§ãã¦ãã ããã
ãã¹ã¦ã®çµã¿è¾¼ã¿ãªãã¸ã§ã¯ãã«ããã¦ã[Symbol.species]
ã¯ç¾å¨ã®ã¤ã³ã¹ã¿ã³ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ãã this
ã®å¤ãè¿ãããå®è£
ããã¦ãã¾ããããã«ãããã¡ã½ãããã³ãã¼ãã¦åºåºã¯ã©ã¹ã§ã¯ãªãæ´¾çã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ã使ãããã¨ãã§ãã¾ããä¾ãã°ãmap()
ã¯å
ã®é
åã¨åãåã®é
åãè¿ãã¾ãã
Array
ãªãã¸ã§ã¯ããæ´¾çããé
åã¯ã©ã¹ MyArray
ã§è¿ããããã¨ãããã§ããããä¾ãã°ãæ¢å®ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãè¿ã map()
ã®ãããªã¡ã½ããã使ç¨ãã¦ããå ´åããããã®ã¡ã½ããã¯è¦ªã® Array
ãªãã¸ã§ã¯ãããMyArray
ãªãã¸ã§ã¯ãã®ä»£ããã«è¿ãããã¨ãã¾ããspecies
ã·ã³ãã«ã§ãããå®ç¾ãããã¨ãã§ãã¾ãã
class MyArray extends Array {
// species ã親ã§ãã Array ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ä¸æ¸ã
static get [Symbol.species]() {
return Array;
}
}
const a = new MyArray(1, 2, 3);
const mapped = a.map((x) => x * x);
console.log(mapped instanceof MyArray); // false
console.log(mapped instanceof Array); // true
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4