본문 바로가기

프로그래밍 언어 /javascript

prototype에 대하여...

자바스크립트의 proto타입에 대해서

1
2
3
let elemeent  = {lastname : "manho"};
elemeent.prototype.nowname = "minjae";
console.log(element.nowname)
cs

위 결과는 어떻게 나올거라고 생각하는가?

결과는 이렇다...

TypeError가 나오면서 nowname이라는 property가 없다고 나온다.

Prototype의 종류에는  Prototype Object  Prototype Link가 있다.

그럼 이둘이 무엇인지 살펴보도록 하자..

Prototype Object

설명하기에 앞서 어떤것이 객체인지 알 필요성이 있다.

1
2
3
4
let object = function() { }
console.log(object);
let newObject = new object();
console.log(newObject);
cs
2번쭐 console에 대한 결과..

 

4번쨰 줄의 console의 결과다..

new 객체로 생성했을떄 

_proto_타입이 붙어서 나오는 것을 볼수가 있다.

 

그리고 객체라고 말하는 {}이것!!!..

{}은 뭐지 라고 생각하는 사람들이 있을것이다.... 콘솔에 찍어보자.

 

 이런 결과가 나온다... 그렇다면 {}이 의미하는 것은???

new Object()과 같다 

Array 같은 경우도 마찬가지다. [] 이라고 표현하기도 하지만 new Array()와 동일하므로 _proto_가 찍혀나온다.

확실한 증명자료를 다음과 같이 첨부한다..

보이는가 다 결국 객체타입인 것이다 . 그리고 그 객체엔 _proto_가 딸려온다.

그렇다면 이제 prototype object에 대해서 설명을 해보겠다.

linkedList를 함수로 생성한다음에 newList로 다시 new 라는 객체로 가져와서 생성했다.
value , next 라는 값이 함수로 생성할떄 있엇던 것을 그대로 들고 온다 .
이게 바로 prototype object 이다.
그렇다면? protoype link는 무엇일까?..
link.... 링크 ..연결....연결되어있다????!!!!
proto 앞의 이것을 클릭해보면 .... ▶

constructor가 있고 그밑에 또 _proto_라는 것으로 연결되어 있다.

constructor는 말 그대로 생성자 이다.

 

말그대로 링크되어 연결되어있다는 것

linkedList.prototype.x = 원시함수 , 래퍼런스 함수로 표현가능.

linkedList로 생성되는 모든 것들에 대한 prototype link에 추가한다는 것이다.

그리고 주의할점이 하나 더 있다면 . 상위 부모에서 같은 프로퍼티로 추가가 되어있다면..

부모가 먼저라는 것이다. 하지만 없다면 자식중에 제일 가까운 값을 표시한다.

 

 

'프로그래밍 언어 > javascript' 카테고리의 다른 글

[javascript] scope 문제...  (0) 2020.01.03
Object.create()에 대해서.....  (0) 2020.01.03
toBe vs toEqual vs == vs ===  (0) 2019.12.25
array.sort()에 대해서...  (0) 2019.10.22
JSON과 관련된 메소드 정리...  (0) 2019.10.22