Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
more
Archives
Today
Total
관리 메뉴

몽탁이의 개발일기

prototype 본문

Javascript 정리

prototype

몽탁 2020. 7. 1. 16:05

자바스크립트에서 prototype은 아주 중요한 개념입니다.

자바스크립트의 객체지향을 지탱해주는 큰 역할을 해주기 때문입니다.

또 일반적인 객체지향 언어와 구분해주는 중요한 개념이기도 합니다.

 

prototype은 모든 객체가 가지고 있는 속성입니다.

그리고 이 속성은 자신이 어떤 객체인지에 대한 객체가 들어 있습니다.

 

function Ultra(){}

Utra.prototype.ultraProp = true;

 

function Super(){}

Super.prototype = new Ultra();

 

function Sub(){}

Sub.prototype = new Super();

 

var o = new Sub();

 

console.log(o.ultraProp);

 

 위 예제는 해당 객체의 prototype 프로퍼티에 상속하고 싶은 객체를 생성자로 만들어 객체를 넣어주어서

상속을 하도록 되어있습니다. 그래서 Sub객체를 받은 o는 Ultra의 prototype 안에 있는 ultraProp에 접근이 가능합니다.

 

 좀 더 구체적으로 위와 같은일이 가능한 이유는 prototype chaining이 일어나기 때문입니다. 

prototype chaining은 해당 객체에서 프로퍼티를 찾을 때 존재하지 않으면 prototype 객체 안에서 해당 프로퍼티를 찾고 또 존재하지 않으면 상위 prototype으로 가 찾게 됩니다.

 

 최종적으로 Object라는 객체까지 올라가 찾아내고 존재 하지않으면 undefine을 출력합니다.

 

 prototype chaining의 쉽게 예를 들면

중간에 Super.prototype.ultraProp = 1 이라고 하게 되면

Ultra의 ultraProp을 출력하는게 아니라 Super의 ultraProp을 출력하게 됩니다.

이것은 프로토타입 체이닝이 하위에서부터 차례되로 상위로 가면서 하나씩 뒤져간다는 것을 의미합니다.

'Javascript 정리' 카테고리의 다른 글

Object 객체  (0) 2020.07.02
표준 내장 객체  (0) 2020.07.02
상속  (0) 2020.07.01
this  (0) 2020.07.01
전역객체  (0) 2020.06.30