3.4.3 프로토타입 체인
프로토타입 체인(prototype chain)이라는 다층 프로토타입을 이용하면 여러 계층의 상속을 구현할 수 있다. 예컨대 ape에 primate2이라는 프로토타입을 두고, 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는 영장류를 말합니다. 원어의 의미를 알고 코드를 읽으면 좀 더 명확히 이해될 것 같아 각주로 남깁니다.