본문 바로가기

Programming Languages/javascript

prototype

javascript에서 거의 모든 객체는 Object의 인스턴스이다.

일반적인 객체는 Object.prototype 에서 속성과 메소드를 상속받는다.

 

function Food (){}

Food.prototype.foodDrop = true;

function Fruit (){}

Fruit.prototype = new Food();

function Apple (){}

Apple.prototype = new Fruit();

var a = new Apple();

console.log(a.foodDrop);

 

위 코드의 내용을 보면 Food, Fruit, Apple 이라는 3개의 생성자가 정의 되어 있다. 그리고 a 에 Apple이라는 객체를 만들었을 때

a의 foodDrop이라는 프로퍼티에 접근했을때 true라는 결과가 나온다.

Apple의 프로퍼티에는 foodDrop을 가지고 있지 않다. 하지만 Apple은 그의 부모인 Fruit 이고 Fruit의 부모인 Food가 

foodDrop을 가지고 있기 때문에 true라는 결과 값이 나온다.

a를 통해 Apple에 접근하면 Apple은 Fruit에 상속을 받고 Fruit은 Food에 상속을 받은 상태이기 때문에 foodDrop에 접근 할 수 있다.

이를 가능하게 하는 것이 prototype이다.

객체에는 프로퍼티를 가지고 있고 prototype이라는 프로퍼티는 그 용도가 약속되어 있는 특수한 프로퍼티이다.

prototype에 저장된 속성들은 생성자를 통해서 객체가 만들어 질 때 그 객체에 연결된다.

이러한 개념을 prototype chain이라 부른다.

 

'Programming Languages > javascript' 카테고리의 다른 글

Callback  (0) 2020.01.15
super  (0) 2020.01.05
class  (0) 2020.01.04