티스토리 뷰

prototype

상속의 구체적 수단
객체의 원형 (의미가 와닫진않음)

함수는 객체이고, 생성자는 함수다. 따라서 생성자도 객체다.
객체는 property를 가질수있는데, prototype은 미리 약속된 특수한 property이다.
prptotype에 저장된 속성(ex. 아래의 ultraProp)들은, 생성자를 통해 객체가 만들어질때 그 객체에 연결된다.
ㄴ 역시 와닫지않음, 아래 예제를 보자

function Ultra(){}
Ultra.prototype.ultraProp = true;

function Super(){}
Super.prototype = new Ultra();

function Sub(){}
Sub.prototype = new Super();

var o = new Sub();
console.log(o.ultraProp); //true

내부적으로 다음과 같은 과정이 일어난다.

  1. 객체 o에서 ultraProp를 찾는다.
  2. 없다면, Sub.prototype.ultraProp를 찾는다.
  3. 없다면, Super.prototype.ultraProp를 찾는다.
  4. 없다면, Ultra.prototype.ultraProp를 찾는다. 발견!

생성자 Sub로 만들어진 객체 o가 Ultra의 ultraProp에 접근 가능한것은,
prototype chain으로 Sub와 Ultra가 연결되있기 때문이다.
prototype은 객체와 객체를 연결하는 체인의 역할을 하고, 이러한 관계를 prototype chain이라고 한다.

주의

Super.prototype = new Ultra()로 해야지,
Super.prototype = Ultra.prototype으로 하면 안된다.
아래와 같이 하면, Super.prototype의 값 변경시 Ultra.prototype도 변경시킨다.
위와 같이 해야, 변경해도 영향을 주지않는다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함