js es6 Iterator

2269 단어
1. 스 트 리밍 기 (Iterator) 는 인터페이스 로 다양한 데이터 구조 에 통 일 된 접근 체 제 를 제공 합 니 다.모든 데이터 구 조 는 Iterator 인 터 페 이 스 를 배치 하면 옮 겨 다 니 기 작업 을 완성 할 수 있 습 니 다 (즉, 이 데이터 구 조 를 순서대로 처리 하 는 모든 구성원).
2. Iterator 의 역할 은 세 가지 가 있 습 니 다. 하 나 는 각종 데이터 구 조 를 위해 통일 적 이 고 간편 한 방문 인 터 페 이 스 를 제공 하 는 것 입 니 다.둘째, 데이터 구조의 구성원 들 이 특정한 순서에 따라 배열 할 수 있 도록 하 는 것 이다.셋째, ES6 는 새로운 옮 겨 다 니 는 명령 for... of 순환 을 만 들 었 고 Iterator 인 터 페 이 스 는 주로 for... of 소 비 를 제공 합 니 다.
3. ES6 에서 일부 데이터 구 조 는 원래 Iterator 인터페이스 (예 를 들 어 배열) 를 갖 추고 있 습 니 다. 즉, 어떠한 처리 도 하지 않 으 면 for.. of 순환 으로 옮 겨 다 닐 수 있 고 어떤 것 은 안 됩 니 다 (예 를 들 어 대상).
이 데이터 구 조 는 Symbol. iterator 속성 을 원생 배치 하고 다른 데이터 구 조 는 없 기 때문이다.Symbol. iterator 속성 을 배치 한 데이터 구 조 를 스 트 리밍 인터페이스 라 고 합 니 다.이 인 터 페 이 스 를 호출 하면 옮 겨 다 니 는 대상 을 되 돌려 줍 니 다.
4. ES6 에서 세 가지 데이터 구 조 는 원생 적 으로 Iterator 인 터 페 이 스 를 가진다. 배열, 일부 유사 한 배열 의 대상, Set 와 Map 구 조 를 가진다.
5. 대상 에 Iterator 인 터 페 이 스 를 추가 하 는 예 입 니 다.
let obj = {
  data: [ 'hello', 'world' ],
  [Symbol.iterator]() {
    const self = this;
    let index = 0;
    return {
      next() {
        if (index < self.data.length) {
          return {
            value: self.data[index++],
            done: false
          };
        } else {
          return { value: undefined, done: true };
        }
      }
    };
  }
};

6. 다음은 배열 과 유사 한 대상 이 배열 의 Symbol. iterator 방법 을 호출 하 는 예 입 니 다.
let iterable = {
  0: 'a',
  1: 'b',
  2: 'c',
  length: 3,
  [Symbol.iterator]: Array.prototype[Symbol.iterator]
};
for (let item of iterable) {
  console.log(item); // 'a', 'b', 'c'
}

일반 대상 에 배열 을 배치 하 는 Symbol. iterator 방법 은 효과 가 없습니다.
7. 일부 경우 Iterator 인터페이스 (즉 Symbol. iterator 방법) 를 기본적으로 호출 합 니 다. 다음 에 소개 할 for.. of 순환 을 제외 하고 몇 가지 다른 장소 가 있 습 니 다.
할당 해제
확장 연산 자 (...)
yield_yield 뒤에 있 는 것 은 옮 겨 다 닐 수 있 는 구조 로 이 구조의 옮 겨 다 니 기 인 터 페 이 스 를 호출 합 니 다.
배열 의 스 트 리밍 은 스 트 리밍 인 터 페 이 스 를 호출 하기 때문에 배열 을 매개 변수 로 받 아들 이 는 모든 경우 가 호출 됩 니 다.
8. 문자열 은 배열 과 유사 한 대상 이 고 원생 Iterator 인터페이스 도 있 습 니 다.
9. 옮 겨 다 니 는 대상 은 next 방법 외 에 return 방법 과 throw 방법 도 있 습 니 다.옮 겨 다 니 는 대상 생 성 함 수 를 직접 쓰 면 next 방법 은 반드시 배치 해 야 합 니 다. return 방법 과 throw 방법 은 배치 여 부 를 선택 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기