일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래머스
- DFS
- 백준
- VIM
- 리트코드
- git
- Database
- 다이나믹 프로그래밍
- Redux
- java
- 그레이들
- CS
- network
- TypeScript
- LeetCode
- DP
- vscode
- Graph
- Algorithm
- react
- BFS
- frontend
- 알고리즘
- Python
- 동적 계획법
- Javascript
- Data Structure
- 안드로이드
- db
- 자바
Archives
- Today
- Total
늘 겸손하게
JavaScript - prototype & prototype chaining 본문
prototype
prototype = 원형
상속받으려는 객체의 원형을 알려주는 속성.
상속 받으려는 객체를 속성에 할당하여 부모 객체를 선언할 수 있다.
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는 Sub객체를 저장한다.
Sub는 Super 객체를 상속받음
Super는 Ultra객체를 상속받음
Ultra의 prototype 속성의 ultraProp 속성에 true를 할당해놓았으므로 true가 출력되는것.
위 처럼 prototype이 꼬리에 꼬리를 물고 연결되는 구조를 prototype chaining이라고 부른다.
prototype chaining
특정 속성을 찾기 위해 상위 프로토타입을 계속해서 타고 올라가는 과정이 프로토타입 체이닝
그러면 아래 코드의 마지막 줄 console.log는 뭘 출력할까?
function Ultra(){}
Ultra.prototype.ultraProp = true;
function Super(){}
Super.prototype = new Ultra();
function Sub(){}
var t = new Super()
t.ultraProp = 2
Sub.prototype = t;
var o = new Sub();
console.log(o.ultraProp);
2를 출력한다.
Sub -> Super -> Ultra 순으로 ultraProp의 값을 탐색한다.
출처
https://www.youtube.com/watch?v=yXnbvyl04V4
'Programming > JavaScript' 카테고리의 다른 글
JavaScript - 콜백 지옥 탈출 (0) | 2022.08.19 |
---|---|
JavaScript - Callback (0) | 2022.08.18 |
JavaScript - Hoisting ( 호이스팅 ) (0) | 2022.08.12 |
JavaScript - 실행 컨텍스트 ( Execution Context ) (0) | 2022.08.11 |
JavaScript - 클로져(Closure)란? (0) | 2022.08.11 |