[JAVASCRIPT] 객체 지향 프로그래밍 OOP 04

김창주·2022년 4월 8일
0

[JS]OOP

목록 보기
4/4

PROTOTYPE Chain

JS에서 Object 는 대부분 기본적으로 내제되어있는 prototype properties 를 내제한다.
그리고 이 Object는 클래스가 가지고 있는 properties를 상속받는다.

예로, hasOwnProperty()는 Object.prototype에 정의되어 있는 메소드로, JS내에서 선언한 object의 대부분에 사용이 가능하다.

function Bird(name) {
  this.name = name;
  this.numLegs = 2;
};

위와 같이 Bird function을 통해 class 생성함수를 선언하였다고 해보자.

함수는 class 의 생성자처럼 Bird라는 class 에서 인자를 받아 이름을 생성하고, 기본 특성으로 다리 개수를 할당하고 있다.

let duck = new Bird("Donald");
duck.hasOwnProperty("name");

여기서 duck 은 Bird 의 인스턴스로, Bird는 duck이라는 object의 supertype이 되며, Bird는 JS에서 순수 "Object"가 가지는 prototype을 상속받는다.

정리하자면, duck은 Bird의 상속자로 name과 numLegs를 받긴 했지만 우리는 Bird에서 특별한 메소드를 정의하지는 않았다.

하지만

Bird 가 이미 JS에서 Object의 기본 prototype 을 상속받았기 때문에 duck 또한 해당 prototype properties들을 상속받는 것이다. 이것이 프로토타입 체인이다.

그래서 아래와 같이 표현을 해보면

Object.prototype.isPrototypeOf(Bird.prototype);

위는 True를 반환한다.

이제 특정 data를 object로 관리하고 분류할 때, method를 생성해서 prototype으로 사용하거나, object의 하위 object 를 생성하고 분류할때 , 상속특성을 이해하고 supertype(parent object)을 선언하여 prototype을 상속시키는 방식으로 효육적이게 관리 할 수 있게 된다.

profile
으.아.으.아. 하게 만들어줭

0개의 댓글