js es6 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 방법 은 배치 여 부 를 선택 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.