이벤트 루프는 js의 비동기 실행 모델의 핵심 메커니즘입니다. 단일 스레드 언어인 js가 어떻게 여러 작업을 동시에 처리하는 것처럼 보이는지를 설명하는 중요한 개념입니다.
이벤트 루프는 js 엔진 자체 일부가 아니라, 브라우저나 Node.js와 같은 호스트 환경에서 제공하는 메커니즘입니다.
이벤트 루프는 다음과 같은 순서로 작동합니다.
console.log("시작");
setTimeout(() => {
console.log("타임아웃 콜백");
}, 0);
Promise.resolve().then(() => {
console.log("프로미스 콜백");
});
console.log("종료");
// 출력 순서:
// "시작"
// "종료"
// "프로미스 콜백" (마이크로태스크 큐)
// "타임아웃 콜백" (태스크 큐)
js는 클래스 기반이 아닌 프로토타입 기반 언어입니다. 프로토타입은 js 객체가 다른 객체로부터 속성과 메서드를 상속받는 메커니즘입니다.
모든 js 객체는 프로토타입 객체를 참조하며, 이 프로토타입 객체의 속성과 메서드를 상속받습니다. 객체의 프로토타입은 내부 [[Prototype]] 속성에 저장됩니다.
프로토타입 체인은 객체의 속성이나 메서드를 찾는 과정입니다.
메모리 효율성: 모든 인스턴스가 동일한 메서드를 각각 복사하지 않고 프로토타입을 통해 공유합니다.
동적 상속: 프로토타입 체인은 런타임에 수정될 수 있어 동적인 상속 구조를 지원합니다.
이벤트 루프는 js가 비동기 작업을 어떻게 처리하는지 설명하고, 프로토타입은 객체 간의 상속과 속성 공유가 어떻게 이루어지는지를 보여줍니다.