Prototype
자바스크립트는 프로토타입 기반 언어이다. 자바스크립트의 객체는 모두 부모 객체와 연결되어 있고 객체 지향의 상속과 같은 개념으로 자식 객체는 부모 객체의 프라퍼티나 함수를 사용할 수 있다. 이 때 부모 객체를 프로토타입이라고 한다.
1. prototype 기반 상속은 어떻게 하는지 설명해주세요.
prototype 상속에는 속성 상속과 메소드 상속이 있다. 속성 상속은 객체의 속성에 접근하려할 때 객체 내 속성 뿐만 아니라 객체의 프로토타입과 체인의 종단에 있는 프로토타입까지의 속성을 탐색하여 접근하는 것을 말한다. 그리고 메소드 상속은 Object.create()를 사용하여 객체를 복사하듯이 만들고 원본 객체안에 있는 함수를 사용하듯이 쓸 수 있다.
2. 프로토타입 체인이란 무엇인가요?
특정 객체의 프로퍼티나 메소드에 접근할 때 그 객체의 부모 프로토 타입 객체에 접근할 수 있다. 이 부모 객체의 프로퍼티나 메소드에 접근할 때에는 __proto__가 가리키는 링크를 따라가면 된다. 이런 식으로 계속해서 상위의 부모 객체를 검색하는 것을 프로토 타입 체인이라고 한다.
3. 프로토타입이랑 클래스를 비교해 말해보세요.
Prototype은 상속을 할 때 다른 객체로부터 직접 인스턴스가 상속되며, 클래스는 일종의 청사진 처럼 클래스의 틀을 만들어 새로운 인스턴스를 생성하며 하위 클래스를 만들어 부모 클래스의 메소드나 속성에 접근할 수 있다.
Closure
클로저는 함수와 그 함수가 선언됐을 때의 렉시컬 환경(Lexical environment)과의 조합이다.
1. 클로져(Closure)는 무엇이며, 어떻게/왜 사용하는지 설명해주세요.
클로져는 현재의 유효 범위를 넘어서 scope chain으로 연결되어 있는 객체, 변수 등의 참조를 발생시키는 것이다. 실행 컨텍스트는 콜 스텍 방식이며 블럭 단위로 스텍에 쌓아 두고 스텍의 위에서 부터 차례로 꺼낸다. 이는 현재 실행 시점 이전의 scope를 참조가 가능하기 때문에 현재 scope에 없는 객체를 참조가 가능하다.
2. 클로져를 만들 때 선호하는 패턴은 무엇인가요? argyle (IIFEs에만 적용할 수 있다)
클로저를 사용할 때는 즉시 실행 함수를 사용하면 외부에서 접근이 불가능한 독립적인 스코프를 가지기 때문에 외부 스코프와 충돌이 발생하지 않는다. 또한 정보의 은닉성을 보장할 수 있다.
'프론트엔드 > Javascript 개념' 카테고리의 다른 글
scope/hoisting (0) | 2022.05.17 |
---|---|
이벤트 & 모듈 (0) | 2022.04.23 |
콜백지옥과 프로미스 (0) | 2022.02.24 |
동기 처리 방식 vs 비동기 처리 방식 (0) | 2021.08.07 |
async vs defer (0) | 2021.08.05 |