- 자바스크립트를 이루고 있는 거의 모든 것은 객체이다.
- 프로토타입 기반 객체지향 프로그래밍 언어이다.
- 실체는 특성이나 성질을 나타내는 속성
- 필요한 속성만 간추려 추상화
- 객체란, 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료 구조
- 자바스크립트는 동일 코드와 같은 불필요한 중복을 제거하기 위해서, 프로토타입 기반 상송을 구현할 수 있다.
funciton Circle(radius){
this.radius = radius;
}
Circle.prototype.getArea = function(){
return Math.PI * this.radius ** 2;
}
const cirlce1 = new Circle(1);
const cirlce2 = new Circle(2);- 위와 같은 경우
- Circle 생성자 함수가 cirlce1, cirlce2fmf todtjdgksek.
- 각각 Circle.protytpe(프로토타입 객체)를 상속받기에,
getArea메소드도 상속받아서 사용 가능하다.
- 어떤 객체의 상위 객체의 역할을 하는 객체로서 다른 객체에 공유 프로퍼티를 제공한다.
- 모든 객체는
[[Prototype]]이라는 내부 슬롯을 가지며 - 이 내부 슬롯의 값은 프로토타입의 참조(null인 경우도 있음)다.
[[Prototype]]에 저장되는 프로토타입은 객체 생성 방식에 의해 결정된다. ex) 객체 리터럴ㄹ로 생성된 객체 프로토타입은Object.prototype이다.
- 모든 객체는
- 모든 객체는
__proto__접근자 프로퍼티를 통해, 자신의 프로토 타입, 즉 [[Prototype]]의 내부 슬롯에 간접적으로 접근할 수 있다.
| 구분 | 소유 | 값 | 사용 주체 | 사용 목적 |
|---|---|---|---|---|
| __proto__접근자 프로퍼티 | 모든 객체 | 프로토타입의 참조 | 모든 객체 | 객체가 자신의 프로토타입의 접근 또는 교체하기 위해 |
| prototype 프로퍼티 | constructor | 프로토타입의 참조 | 생성자 함수 | 생성자 함수가 자신이 생성할 객체(인스턴스)의 프로토타입을 할당하기 위해 |