더북(TheBook)

3.4.3 프로토타입 체인

프로토타입 체인(prototype chain)이라는 다층 프로토타입을 이용하면 여러 계층의 상속을 구현할 수 있다. 예컨대 apeprimate2이라는 프로토타입을 두고, ape는 다시 chimp의 프로토타입으로 사용하는 식이다.


var primate = {
stereoscopicVision: true
};

var ape = Object.create(primate);
ape.hasThumbs = true;
ape.hasTail = false;
ape.swing = function() {
return "매달리기";
};

var chimp = Object.create(ape);

console.log(chimp.hasTail); // false (ape 프로토타입)
console.log(chimp.stereoscopicVision); // true (primate 프로토타입)

chimp.stereoscopicVision은 이 객체의 고유 프로퍼티가 아닌 까닭에 자바스크립트 엔진은 chimp의 프로토타입 체인을 따라 ape까지 올라가 결국 primate에서 이 프로퍼티를 발견한다. 만약 프로토타입 체인을 다 뒤져봐도 없으면 undefined를 반환한다.

너무 깊숙이 프로토타입 체인을 찾게 하면 성능상 좋을 게 없으니 될 수 있으면 너무 깊이 체인을 쓰지 않는 편이 좋다.

 

2 역주 primate는 영장류를 말합니다. 원어의 의미를 알고 코드를 읽으면 좀 더 명확히 이해될 것 같아 각주로 남깁니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.