프로토타입, prototype

임재환·2021년 4월 5일
0

JavaScript

목록 보기
12/15


JavaScript의 상속과 prototype

상속은 객체지향 프로그래밍의 핵심 개념으로 어떤 객체의 프로퍼티나 메서드를 다른 객체가 상속받아 그대로 사용하는 것을 말한다.

자바스크립트는 프로토타입 기반의 상속으로 불필요한 중복을 제거한다.


constructor와 prototype

prototype

최상위 객체인 Object.prototype을 제외한 모든 객체는 자신의 프로토타입을 갖는다.

모든 객체는 Object.prototype의 접근자 프로퍼티인 __proto__프로퍼티를 이용해 내부슬롯[[prototype]]의 값인 자신의 프로토타입에 접근할 수 있다.

Object.prototype의 하위 객체가 아닌 경우 __proto__ 프로퍼티를 사용할 수 없다.
__proto__ 대신 Object.getPrototypeOfObject.setPrototypeOf를 사용해 자신의 프로토타입에 접근하거나 프로토타입을 변경할 수 있다.

constructor.prototype

모든 생성자 함수는 프로토타입 객체를 갖는다.
이 객체는 자신의 프로토타입이 아니다.

Foo라는 생성자 함수가 존재할 경우 Foo의 프로토타입은 Function.prototype이며, Foo의 프로토타입 객체인 Foo.prototype이 존재한다.

prototype.constructor

모든 생성자 함수는 프로토타입 객체를 갖는다.
동시에 해당 프로토타입 객체는 생성자함수를 갖는다.
생성자 함수와 프로토타입 객체는 쌍으로 존재한다.

Object.prototype 객체는 Object 생성자 함수를 가지며,
Function.prototype 객체는 Function 생성자 함수를 갖는다.

생성자 함수와 new 연산자를 통해 새로운 객체를 생성하면
이 객체의 프로토타입은 생성자 함수의 프로토타입 객체가 된다.

new Foo를 통해 foo를 생성하면,
foo의 프로토타입은 Foo.prototype이 된다.


프로토타입의 결정

profile
What do I do?

0개의 댓글