더북(TheBook)

3.4.2 프로토타입 상속

Object.prototype에 유용한 프로퍼티가 있긴 하지만, 자바스크립트의 프로토타입 상속은 기본 프로토타입을 맞춤형 프로토타입으로 대체할 때 그 진가가 드러난다. chimp 객체와 더불어 bonobo1 객체를 생성한다고 하자. 이들 모두 동물의 왕국에 살고 있으니 chimp 객체와 bonobo 객체는 공유하는 프로퍼티가 적지 않을 것이다.

이런 공통 프로퍼티를 ape 객체에 담아두면 객체마다 프로퍼티를 반복할 필요가 없다. chimp, bonobo 객체를 ape에 연결해 ape공유 프로토타입(shared prototype)으로 두는 것이다.

ECMAScript 5부터 등장한 Object.create 메서드를 사용하면 기존 객체와 프로토타입이 연결된 객체를 새로 만들 수 있다. 다음은 ape 프로토타입을 공유하는 chimp, bonobo 객체를 Object.create로 생성하는 코드 조각이다.


var ape = {
hasThumbs : true,
hasTail: false,
swing : function() {
  return '매달리기';
}
};

var chimp = Object.create(ape);

var bonobo = Object.create(ape);
bonobo.habitat = '중앙 아프리카';
console.log(bonobo.habitat); // '중앙 아프리카' (bonobo 프로퍼티)
console.log(bonobo.hasTail); // false (ape 프로토타입)
console.log(chimp.swing()); // '매달리기' (ape 프로토타입)

 

1 역주 bonobo는 일명 피그미 침팬지라고도 불리는 보노보 원숭이를 가리킵니다. 고릴라나 오랑우탄보다도 인간과 유전적으로 더 가까운 영장류라고 합니다.

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