이런게 있구나 하고 알아두면 좋을 이론.
우선 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함수를 찾아 적용한다.
JavaScript :: 스코프(Scope) (0) | 2020.08.25 |
---|---|
JavaScript :: 요소, 창, 화면의 높이,너비 값 구하기 (0) | 2020.08.14 |
JavaScript :: 객체와 함수(call, bind) (0) | 2020.08.05 |
JavaScript :: 객체 간의 상속 (0) | 2020.08.01 |
JavaScript :: super (0) | 2020.08.01 |
댓글 영역