prototype은 말 그대로 객체의 원령이라고 할 수 있다. 함수는 객체다. 그러므로 생성자로 사용될 함수도 객체이다. 객체는 프로퍼티를 가질 수 있는데
prototype이라는 프로퍼티는 용도가 약속되어 있는 특수한 프로퍼티다.
prototype에 저장된 속성들은 생성자를 통해 객체가 만들어질 때 그 객체에 연결된다.
* JavaScript의 모든 객체는 부모인 prototype 객체를 가리키는 참조 링크 형태의 숨겨진 property가 있다. ECMAScript에서는 이 참조 링크를
프로토타입 링크(prototype link)라고 부른다.
* cunstructor(생성자 함수)의 prototype 프로퍼티는 자신과 링크된 prototype 객체를 가리키고 있다.
* new 객체 생성을 한 뒤의 인스턴스는 자신의 부모 객체인 prototype 객체를 숨겨진 링크 [[prototype]]으로 가리키고 있다.
즉, 객체를 만드는 것은 생성자 함수지만, 생성된 객체의 실제 부모 역할을 하는 것은 생성자의
prototype 프로퍼티가 가리키는 prototype 객체이다.
* A객체가 B객체를 상속은 후에 var a = new A();가 있다고 할 때, a의 property를 요청하면
1. JavaScript는 처음에 a 객체에서 요청된 property가 해당 객체에 존재하는지 확인한다.
2. 찾지 못했을 경우 JavaScript는 a의 prototype 객체인 A.prototype에서 접근하여 해당 property를 찾는다.
3. 여기서도 찾지 못했다면 A가 상속받은 B.prototype에서 해당 property를 찾아 리턴한다.
'WEB > JavaScript' 카테고리의 다른 글
원시 데이터 타입과 레퍼 객체 (0) | 2016.10.13 |
---|---|
표준 내장 객체 (0) | 2016.10.13 |
상속 (0) | 2016.10.13 |
전역객체와 this (0) | 2016.10.13 |
생성자 (0) | 2016.10.13 |