자바스크립트 프로토타입

차지현·2022년 2월 6일
0

자바스크립트

목록 보기
1/1

<<코어 자바스크립트 6장>>
어떤 생성자 함수를 new 연산자와 함께 호출하여 인스턴스를 생성하면, 해당 인스턴스원본 Constructor의 prototype 프로퍼티를 참조한 _proto__라는 이름의 프로퍼티를 갖는다.


여기서 인스턴스의 _proto__의 내부 프로퍼티 중 constructor는 원본 생성자함수를 가리킨다.


따라서 constructor라는 프로퍼티는, 인스턴스가 자신의 생성자 함수가 무엇인지를 알고자 할때 필요한 수단이다.


위의 'chloe'인스턴스를 콘솔에 입력하면 프로토타입 체이닝을 확인할 수 있다.
자바스크립트의 프로토타입은 객체지향언어의 상속과 유사한 개념으로,
부모의 프로퍼티를 상속받아 사용할 수 있듯이, 상위 생성자의 프로토타입을 계속 열어보면 결국 Object.prototype에 당도한다.
이런식으로 프로토타입 안의 프로토타입을 찾아가는 과정을 프로토타입 체이닝이라고 하며, 프로토 타입 체이닝을 통해 상위 프로토타입 메소드를 자신의 것처럼 호출할 수 있다.


스태틱 메소드 vs 프로토타입 메소드

프로토타입 메소드는 chloe객체의 디렉토리에서 prototype내부에 선언되어있는 메소드이며, 스태틱 메소드는 chloe객체의 디렉토리에서 constructor내부에 선언되어있는 메소드이다.

프로토타입 메소드는 상속받은 상위프로토타입에 선언되어있는 메소드들을 사용할 수 있다. 고로 Object타입의 인스턴스 메소드 (ex. toString, values ...) 를 chloe 객체에서 이용할 수 있다. (_proto__는 생략이 가능하다)

스태틱메소드의 예시는 Object로 드는것이 적절 할 것 같다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object
MDN에 나와있는 Object의 정적메소드 항목이다.
(이하 기타 메소드 생략)
해당 메소드들은 메소드의 주어가 Object여야 한다. Object객체만이 실행할수 있는 메소드.

하위 인스턴스에서는 이런 정적 메소드들을 호출 할 수 없으며,
범용성이 있는 프로토타입 메소드만을 호출할수 있다.

profile
의 가상메모리 공간📂

0개의 댓글