✅ 프로토타입(Prototype)이란?
- 자바스크립트는 클래스 기반이 아니라, 프로토타입 기반(prototype-based)의 객체 지향 언어
- 즉, 기존 객체를 ‘원형(Prototype)’으로 삼아 다른 객체가 이를 상속받는 구조
✅ 핵심 개념 요약
용어 |
설명 |
prototype |
함수(생성자 함수)의 속성. 인스턴스가 공유할 메서드/속성 저장소 |
__proto__ |
생성된 객체(인스턴스)의 내부 참조. 생성자의 prototype을 가리킴 |
인스턴스 |
new 키워드로 생성된 객체. __proto__ 로 prototype에 연결됨 |
✅ 흐름 요약
- 생성자 함수 →
.prototype
객체에 메서드/속성 정의
- 인스턴스를 만들면, 자동으로
__proto__
가 그 prototype을 가리킴
- 인스턴스에서 메서드 호출 시, 없으면
__proto__
를 따라 올라가서 찾음
✅ 예제 코드로 이해하기
function Person(name) {
this.name = name;
}
// prototype에 메서드 정의
Person.prototype.sayHello = function() {
console.log(`안녕, 나는 ${this.name}`);
};
// 인스턴스 생성
const p1 = new Person("철수");
p1.sayHello(); // 안녕, 나는 철수
🔍 내부 구조 설명
p1.__proto__ === Person.prototype
→ ✅ true
sayHello
는 p1
안에는 없지만, __proto__
를 통해 찾아감
✅ 정리 문장
자바스크립트는 프로토타입 기반 언어로,
객체는 생성자 함수의 **prototype을 참조하는 `__proto__`를 통해 메서드와 속성을 상속**받습니다.
`prototype` 객체는 인스턴스들이 **공유**하는 메서드/속성을 담고 있고,
`__proto__`는 이 prototype을 참조하는 **숨겨진 링크(Prototype chain)**입니다.