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()
ì ìë ë°°ì´ê³¼ ëì¼í ì íì ë°°ì´ì ë°íí©ëë¤).
íìë ë°°ì´ í´ëì¤ MyArray
ìì Array
ê°ì²´ë¥¼ ë°ííê³ ì¶ì ì ììµëë¤. ì를 ë¤ì´ 기본 ìì±ì를 ë°ííë map()
ì ê°ì ë©ìë를 ì¬ì©í ë ì´ë¬í ë©ìëê° MyArray
ê°ì²´ ëì ë¶ëª¨ Array
ê°ì²´ë¥¼ ë°íí기를 ìí ì ììµëë¤. species
ì¬ë³¼ì ì¬ì©íë©´ ì´ë ê² í ì ììµëë¤.
class MyArray extends Array {
// ë¶ëª¨ ë°°ì´ ìì±ìë¡ species ë®ì´ì°ê¸°
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