
클래스 상속
class Parent {
// ...
}
class Child extends Parent {
// ...
}
클래스 상속(class inheritance, subclassing) 기능을 통해 한 클래스의 기능을 다른 클래스에서 재사용할 수 있습니다.
이터러블은 반복할 수 있는 이라는 의미를 가지고 있습니다.
Symbol.iterator 라는 메서드를 가지고 있어야 하며, 가장 대표적으로 배열과 문자열이 있습니다.
간혹 이터러블하면서 유사 배열인 객체가 있을 수 있지만, 유사배열과 이터러블은 특징이 다르기 때문에 무조건 유사 배열이라해서 이터러블 한 것도, 이터러블이라고 해서 유사배열인 것이 아니라는 것을 기억하자!
next()는 제너레이터의 주요 메서드입니다. next()를 호출하면 가장 가까운 yield <value>문을 만날 때까지 실행이 지속됩니다(value를 생략할 수도 있는데, 이 경우엔 undefined가 됩니다). 이후, yield <value>문을 만나면 실행이 멈추고 산출하고자 하는 값인 value가 바깥 코드에 반환됩니다.
next 메소드를 호출하기 위해 Symbol.iterator메소드로 이터레이터를 별도 생성할 필요가 없다.
console.log(generator.next());
// {value: 1, done: false}console.log(generator.next());
// {value: 2, done: false}console.log(generator.next());
// {value: 3, done: true}
제너레이터 객체의 .next() 메소드를 호출할 때마다, 제너레이터 객체는 스스로 깨어나서 다음번 yield문에 다다를 때까지 실행된다.
for(let value of generator) {
console.log(value);// 1, 2
}
참고로 generator를 for-of문으로 돌리면 1, 2까지만 출력된다. 이유는 for-of 이터레이션이 done: true일 때 마지막 value를 무시하기 때문이다. 그러므로 for-of를 사용했을 때 모든 값이 출력되길 원한다면 yield로 값을 반환해야한다.
프레임워크의 특징
: 라이브러리와 프레임워크의 차이는 제어 흐름에 대한 주도성이 누구에게 / 어디에게 있는가에 있다.
즉, 애플리케이션의 Flow(흐름)을 누가 쥐고 있느냐에 달려있다.
