반응형
34 이터러블
이터러블 프로토콜
Symbol.iterator를 프로퍼티 키로 사용한 메서드를 직접 구현하거나 상속받아 호출하면, 이터레이터를 반환한다. 이를 이터러블 프로토콜이라 한다.
이터러블은 for … of 문을 통해 순회할 수 있으며, 스프레드문법과 디스트럭처링 할당의 대상으로 사용할 수 있다.
이터레이터 프로토콜
Symbol.iterator를 호출하면 이터레이터 프로토콜을 준수한 이터레이터를 반환한다.
이터레이터.next를 호출하면 이터러블을 순회하며 value와 done프로퍼티를 갖는 이터레이터 리절트 객체를 반환한다. 이를 이터레이터 프로토콜이라 하며 이를 준수한 객체를 이터레이터라 한다.
이터레이터는 이터러블의 요소 탐색을 위한 포인터 역할을 한다.
...
[Symbol.iterator](){
return {
next(){
return {value:any, done : boolean}
}
}
}
return 이하가 이터레이터, 전체 메서드가 이터러블
이터러블
이터러블인지 확인하는 함수
const isIterable=v=>v!==null&&typeof v[Symbol.iterable()]==='function'
Symbol.iterable이 있다면 이는 for of, 스프레드, 디스트럭처링 할당이 가능하다.
이터레이터
next메서드를 호출하면 다음 이터러블을 순회한 결과를 나타내는 이터레이터 리절트 객체를 반환한다.
빌트인 이터러블
Array, String, Map, Set, TypedArray, arguments, DOM컬렉션은 이터러블이다.
유사배열객체
length와 프로퍼티 키를 인덱스로 사용하는 객체
이터러블이 아니기 때문에 for of문 사용 불가
반응형