상세 컨텐츠

본문 제목

JavaScript :: prototype과 __proto__

JavaScript

by 비오스터딩 2020. 8. 5. 02:02

본문

 

  prototype__proto__  

 

이런게 있구나 하고 알아두면 좋을 이론.

 

 

우선 javascript에서 함수는 사실 객체라고 할 수있다.

 

function Object(매개변수1, 매개변수2, 매개변수3){

this.매개변수1 = 매개변수1;

this.매개변수2 = 매개변수2;

this.매개변수3 = 매개변수3;

}

>> 객체이기 때문에 속성값(매개변수)를 가질 수 있음.

 

예제를 통해 prototype과 __proto__가 어떻게 다른지,

또 이 둘이 어떻게 작동하는지를 알아보자.

 

name, first, second 속성을 가진 'Person' 객체를 생성한다.

여기서 { } 안에 내용은 prototype으로,

이 프로토타입을 가지는 다른 객체를 생성 할 수 있다.

 

Person객체를 생성할 때, 사실 다른 객체가 하나 더 생성되는데,

그 객체가 바로 'Person의 prototype'이라는 객체이다.

'Person의 prototype'은 객체생성자('Person')와 sum이라는 함수(메서드)를 가진다.

 

이름이 'kim'인 새로운 객체를 만들어보자.

'kim'은 각각 인자를 kim, 10, 20이라고 가진 'Person'객체임을 알 수 있다.

'kim'의 __proto__(부모객체)는 'Person의 prototype'이다.

개발자 모드에서 __proto__에 sum과 constructor(생산자)인 'Person'객체가 있는 것을 확인 할 수 있다.

 

 

즉 kim의 __proto__(부모객체)는

'Person의 프로토타입'이라고 할 수 있다.

 

kim에는 sum이라는 함수가 없지만, kim.sum()을 사용할 경우,

kim의 부모객체인 'Person의 프로토타입'에서 sum함수를 찾아 적용한다.

 

 

 

 

 

 

반응형

관련글 더보기

댓글 영역