프론트엔드 개발 · 중급
JavaScript의 프로토타입(Prototype)과 프로토타입 체인에 대해 설명해주세요.
힌트 · __proto__와 prototype 속성의 차이를 설명해보세요.
프로토타입프로토타입 체인상속__proto__Object.getPrototypeOf
모범답안
JavaScript에서 프로토타입은 객체 지향 프로그래밍의 핵심 개념 중 하나입니다. 모든 객체는 자신의 프로토타입 객체를 가리키는 숨겨진 링크인 __proto__ 속성을 가지고 있습니다. 이 __proto__는 객체를 생성한 함수의 prototype 속성을 참조합니다.
프로토타입 체인은 객체의 속성이나 메서드를 찾을 때, 해당 객체에서 찾지 못하면 프로토타입 객체로 이동하여 찾고, 거기서도 없으면 그 프로토타입의 프로토타입으로 이동하는 과정을 반복하는 것을 말합니다. 이 과정을 통해 객체는 자신의 프로토타입 객체의 속성과 메서드를 상속받아 사용할 수 있습니다.
예를 들어, const obj = {};로 생성된 객체 obj는 Object.prototype을 프로토타입으로 가지며, Object.prototype은 최상위 프로토타입이므로 null을 가리킵니다.
prototype 속성은 함수 객체만이 가지는 속성으로, 해당 함수를 생성자 함수로 사용하여 객체를 생성했을 때, 생성된 객체의 __proto__가 참조하게 될 객체를 가리킵니다. Object.getPrototypeOf(obj)를 사용하면 obj의 프로토타입 객체를 명시적으로 확인할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 JavaScript 면접 질문
- JavaScript의 이벤트 루프(Event Loop)와 비동기 처리 방식에 대해 설명해주세요.
- Promise와 async/await의 차이점과 에러 처리 방법에 대해 설명해주세요.
- JavaScript의 this 바인딩 규칙에 대해 설명해주세요.
- JavaScript의 가비지 컬렉션(Garbage Collection) 동작 방식에 대해 설명해주세요.
- JavaScript의 debounce와 throttle의 차이점과 사용 사례를 설명해주세요.
- JavaScript의 실행 컨텍스트(Execution Context)와 스코프 체인에 대해 설명해주세요.