javascript
Prototype.
프로토타입 체인, __proto__ vs prototype, 상속과 Object.create
JavaScript 객체는 프로토타입 객체를 통해 속성을 공유하며, 이 연결 고리를 프로토타입 체인이라고 부릅니다.
📘 핵심 개념
| 용어 | 설명 |
|---|---|
[[Prototype]] | 객체가 속성을 못 찾을 때 따라가는 내부 슬롯 |
__proto__ | [[Prototype]]에 접근하는 레거시 getter (비표준 관례) |
prototype | 함수에만 존재. new로 만든 인스턴스의 [[Prototype]]이 가리키는 객체 |
| 프로토타입 체인 | null에 닿을 때까지 [[Prototype]]을 따라 올라감 |
function Person(name) {
this.name = name;
}
Person.prototype.greet = function () {
return `Hi, ${this.name}`;
};
const a = new Person('mason');
a.greet(); // Person.prototype에서 찾음
🔗 ES6 class와의 관계
class는 문법적 설탕(syntactic sugar) — 내부적으로는 여전히 프로토타입 기반.extends는 서브클래스prototype의[[Prototype]]을 슈퍼클래스prototype으로 연결.
🔗 참고 자료
- Inheritance and the prototype chain (MDN) —
[[Prototype]]조회와 프로토타입 체인을 설명한다. - Classes (MDN) — class 문법이 프로토타입 기반 위에 어떻게 동작하는지 다룬다.
- Function: prototype (MDN) — 생성자
prototype과new인스턴스 연결을 정리한다. - Object.getPrototypeOf() (MDN) — 프로토타입을 표준 API로 읽는 방법을 설명한다.
