티스토리 뷰
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
내부적으로 다음과 같은 과정이 일어난다.
- 객체 o에서 ultraProp를 찾는다.
- 없다면, Sub.prototype.ultraProp를 찾는다.
- 없다면, Super.prototype.ultraProp를 찾는다.
- 없다면, 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도 변경시킨다.
위와 같이 해야, 변경해도 영향을 주지않는다.
'Front, JavaScript' 카테고리의 다른 글
JavaScript) JS의 Callback 예제 (0) | 2019.09.13 |
---|---|
JavaScript) Youtube 재생목록 총재생시간 구하기 (0) | 2019.09.13 |
JavaScript) arguments / apply&call (0) | 2019.09.13 |
JavaScript) Closure (클로저) (0) | 2019.09.13 |
JavaScript) Scope (유효범위) (0) | 2019.09.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- bfs
- graph
- C
- Stack
- Android Studio
- 리버싱
- Android
- Vo
- 회고
- 프로그래머스
- reversing
- FRAGMENT
- Algorithm
- OneToMany
- 웹해킹
- brute-force
- webhacking.kr
- javascript
- git
- mysql
- 우아한 테크코스
- socket
- queue
- 해외여행
- Data Structure
- JPA
- dfs
- sort
- 개발자
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함