패스잇
프론트엔드 개발 · 중급

JavaScript의 프로토타입(Prototype)과 프로토타입 체인에 대해 설명해주세요.

힌트 · __proto__와 prototype 속성의 차이를 설명해보세요.

프로토타입프로토타입 체인상속__proto__Object.getPrototypeOf

모범답안

JavaScript에서 프로토타입은 객체 지향 프로그래밍의 핵심 개념 중 하나입니다. 모든 객체는 자신의 프로토타입 객체를 가리키는 숨겨진 링크인 __proto__ 속성을 가지고 있습니다. 이 __proto__는 객체를 생성한 함수의 prototype 속성을 참조합니다.

프로토타입 체인은 객체의 속성이나 메서드를 찾을 때, 해당 객체에서 찾지 못하면 프로토타입 객체로 이동하여 찾고, 거기서도 없으면 그 프로토타입의 프로토타입으로 이동하는 과정을 반복하는 것을 말합니다. 이 과정을 통해 객체는 자신의 프로토타입 객체의 속성과 메서드를 상속받아 사용할 수 있습니다.

예를 들어, const obj = {};로 생성된 객체 objObject.prototype을 프로토타입으로 가지며, Object.prototype은 최상위 프로토타입이므로 null을 가리킵니다.

prototype 속성은 함수 객체만이 가지는 속성으로, 해당 함수를 생성자 함수로 사용하여 객체를 생성했을 때, 생성된 객체의 __proto__가 참조하게 될 객체를 가리킵니다. Object.getPrototypeOf(obj)를 사용하면 obj의 프로토타입 객체를 명시적으로 확인할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 JavaScript 면접 질문

← JavaScript 면접 질문 전체 보기