자바스크립트
의 모든 객체는 자신의 부모 객체와 연결되어 있습니다.
좀더 정확히 말하자면 부모 객체의 원형(부모 객체의 프로토타입)
객체 지향에서의 상속 개념처럼 부모 객체의 프로퍼티나 메소드를 상속 받아 쓸 수 있습니다.
실제로는 상속 보다 위임에 가깝지만 통상적으로 상속으로 표현합니다.
부모 객체를 프로토타입 객체, 혹은 프로토타입이라고 부릅니다.
그리고 부모 객체를 참조하는 걸 프로토타입 링크라고 합니다.
// animal 객체 생성
let animal = {
leg: 4,
legCount() {
console.log(this.leg); // this는 animal을 의미합니다.
}
};
// 또 다른 객체 cat
// animal을 프로토타입 상속 받아올 거예요. (__proto__를 씁니다.)
let cat = {
__proto__:animal, // cat의 프로토타입은 animal!
cute: true,
};
// 프로토타입을 설정해주어서 cat은 animal의 메소드와 프로퍼티를 사용할 수 있어요.
cat.legCount();
console.log(cat.leg);
// cat만 가지고 있는 프로퍼티도 있고요!
console.log(cat.cute);
// animal은 cat의 속성을 가져올 수 없어요!
console.log(animal.cute);
__proto__
를 써서 접근하는 방식은 구식 방식으로 현재는 deprecated 되어있지만 누군가에게 설명하거나 면접자리에서는 아직 나오는 단어들이기 때문에 직접 접근하는 방식을 알아두는 편이 좋습니다.
가급적 Object.getPrototypeOf()를 이용하여 참조하고, 프로토타입 체인에 연결하는 Object.create()를 이용하여 연결합시다.