Symbol.iterator
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2016ë 9ì.
ì ìë ¤ì§ Symbol.iterator ì¬ë³¼ì ê°ì²´ì ëìíë 기본 ì´í°ë ì´í°ë¥¼ ì§ì í©ëë¤. for...ofì ê°ì´ ì¬ì©ë©ëë¤.
ìëí´ ë³´ê¸°
const iterable1 = {};
iterable1[Symbol.iterator] = function* () {
yield 1;
yield 2;
yield 3;
};
console.log([...iterable1]);
// Expected output: Array [1, 2, 3]
Property attributes of Symbol.iterator | |
|---|---|
| ì°ê¸° ê°ë¥ | ë¶ê°ë¥ |
| ì´ê±° ê°ë¥ | ë¶ê°ë¥ |
| ì¤ì ê°ë¥ | ë¶ê°ë¥ |
ì¤ëª
(for..of 루íì ììë¶ë¶ê³¼ ê°ì´) ê°ì²´ê° ë°íë íìê° ììëë ì¸ì ë ì§@@iterator ë©ìëë ì¸ì ìì´ë í¸ì¶ í ì ììµëë¤. ë°íë iteratorë ë°ë³µí ê°ì ì·¨ëí기 ìí´ ì¬ì©ë©ëë¤.
Objectì ê°ì´ ë°ë³µëìì ë´ì¥íê³ ìë ííë ìì§ë§ ê·¸ë ì§ ìì ê²½ì°ë ììµëë¤. @@iterator ë©ìë를 ê°ì§ê³ ìë ë´ì¥í íì
ì ìëì ê°ìµëë¤.
Array.prototype[@@iterator]()TypedArray.prototype[@@iterator]()String.prototype[@@iterator]()Map.prototype[@@iterator]()Set.prototype[@@iterator]()
ìì¸í ë´ì©ì ë°ë³µì²ë¦¬ íë¡í ì½ë íì¸ í´ ì£¼ì기 ë°ëëë¤.
ìì
>ì ì ì ì ì´í°ë ì´í°
ììì 기ì í ë°ì ê°ì´ ë ìì ì¼ë¡ ì´í°ë ì´í°ë¥¼ ë§ëë ê²ì´ ê°ë¥í©ëë¤.
var myIterable = {};
myIterable[Symbol.iterator] = function* () {
yield 1;
yield 2;
yield 3;
};
[...myIterable]; // [1, 2, 3]
ë¹ì í ì´í°ë ì´í°
iterableì @@iterator ë©ìëê° ì´í°ë ì´í° ê°ì²´ë¥¼ ë°ííì§ ìë ê²½ì° ë¹ì í ì´í°ë ì´í°ì
ëë¤. ì´ì ê°ì´ ì¬ì©íë ê²½ì° ì¤íì ìì¸ í¹ì ììì¹ ëª»í ë²ê·¸ë¥¼ ë°ìí ê°ë¥ì±ì´ ììµëë¤.
var nonWellFormedIterable = {}
nonWellFormedIterable[Symbol.iterator] = () => 1
[...nonWellFormedIterable] // TypeError: [] is not a function
ëª ì¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-symbol.iterator> |