자바스크립트에서 모든 객체는 다른 객체를 상속할 수 있는데, 이를 프로토타입 상속(prototype inheritance)이라고 한다. 객체의 프로토타입은 다른 객체를 참조할 수 있으며, 이를 통해 해당 객체에서 정의되지 않은 속성에 대해서도 프로토타입 체인을 통해 접근할 수 있다.
객체는 내부적으로 __proto__
라는 속성을 가지는데, 이 속성을 통해 객체의 프로토타입을 참조할 수 있다. 예를 들어, foo
객체가 bar
객체를 상속한다면, foo.__proto__
속성은 bar
객체를 가리키게 된다.
const bar = {
a: 1,
b: 2,
};
const foo = {
c: 3,
};
// foo 객체의 프로토타입을 bar 객체로 설정
Object.setPrototypeOf(foo, bar);
// foo 객체에서 a, b 속성을 접근할 수 있게 됨
console.log(foo.a); // 1
console.log(foo.b); // 2
프로토타입을 이용하면 객체의 상속과 확장을 손쉽게 할 수 있다. 이를 통해 객체 지향 프로그래밍에서 상속을 구현하거나, 코드의 재사용성을 높이는 등의 다양한 작업을 할 수 있다.