Baseline Widely available
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]
æè¿°
å½éè¦å¯¹ä¸ä¸ªå¯¹è±¡è¿è¡è¿ä»£æ¶ï¼æ¯å¦å¼å§ç¨äºä¸ä¸ª for..of
循ç¯ä¸ï¼ï¼å®ç [Symbol.iterator]()
æ¹æ³é½ä¼å¨ä¸ä¼ åæ
åµä¸è¢«è°ç¨ï¼è¿åçè¿ä»£å¨ç¨äºè·åè¦è¿ä»£çå¼ã
ä¸äºå
ç½®ç±»åæ¥æé»è®¤çè¿ä»£å¨è¡ä¸ºï¼å
¶ä»ç±»åï¼å¦ Object
ï¼å没æãæ¥æé»è®¤ç [Symbol.iterator]()
æ¹æ³çå
ç½®ç±»åæ¯ï¼
Array.prototype[Symbol.iterator]()
TypedArray.prototype[Symbol.iterator]()
String.prototype[Symbol.iterator]()
Map.prototype[Symbol.iterator]()
Set.prototype[Symbol.iterator]()
æ´å¤ä¿¡æ¯è¯·åè§è¿ä»£åè®®ã
å¯å å¦ å¯æä¸¾ å¦ å¯é ç½® å¦ ç¤ºä¾ èªå®ä¹è¿ä»£å¨æä»¬å¯ä»¥åä¸é¢è¿æ ·å建èªå®ä¹çè¿ä»£å¨ï¼
const myIterable = {};
myIterable[Symbol.iterator] = function* () {
yield 1;
yield 2;
yield 3;
};
[...myIterable]; // [1, 2, 3]
æè å¯ä»¥å¨ç±»æå¯¹è±¡ä¸ä½¿ç¨è®¡ç®å±æ§å®ä¹è¿ä»£ï¼
class Foo {
*[Symbol.iterator]() {
yield 1;
yield 2;
yield 3;
}
}
const someObj = {
*[Symbol.iterator]() {
yield "a";
yield "b";
},
};
console.log(...new Foo()); // 1, 2, 3
console.log(...someObj); // 'a', 'b'
ä¸ç¬¦åæ åçè¿ä»£å¨
妿ä¸ä¸ªè¿ä»£å¨ [Symbol.iterator]()
没æè¿åä¸ä¸ªè¿ä»£å¨å¯¹è±¡ï¼é£ä¹å®å°±æ¯ä¸ä¸ªä¸ç¬¦åæ åçè¿ä»£å¨ãè¿æ ·çè¿ä»£å¨å°ä¼å¨è¿è¡ææåºå¼å¸¸ï¼çè³åºç°é常诡å¼ç Bugï¼
const nonWellFormedIterable = {};
nonWellFormedIterable[Symbol.iterator] = () => 1;
[...nonWellFormedIterable]; // TypeError: [Symbol.iterator]() returned a non-object value
è§è æµè§å¨å
¼å®¹æ§ åè§
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