프로토타입 체인(prototype chain)
21 June, 2020 - JavaScript - 1 min read
프로토타입(prototype)
자바스크립트의 모든 객체는 [[Prototype]]
이라고 하는 내부 슬롯(internal slot)을 지닌다. 하위 객체는 상위 객체의 prototype
을 상속받으며, 상속받은 데이터는 __proto__
에 저장된다.
const myCat = {
name: 'Lucy',
sayHello: function() { console.log('Hello! ' + this.name); }
};
const yourCat = {
name: 'Tom'
};
yourCat.__proto__ = myCat;
const whoseCat = {};
whoseCat.__proto__ = yourCat;
whoseCat.sayHello(); // Hello! Tom
프로토타입 체인(prototype chain)
위와 같이 __proto__
를 통해 하위 객체와 상위 객체가 이어져 있으며, 이를 프로토타입 체인 이라고 한다. 그리고, 자신과 가까운 객체의 프로퍼티부터 위로 거슬러 올라가며 검색하게 된다.
Object.getPrototypeOF()
ES 명세에서나 브라우저에서나 __proto__
를 통한 접근은 권장하지 않는다. 따라서 프로토타입 메서드에 접근해야 할 때에는 Object.getPrototypeOf()
또는 Object.creat()
를 활용하도록 하자.
참고: