Skip to content

Latest commit

 

History

History
57 lines (42 loc) · 2.24 KB

File metadata and controls

57 lines (42 loc) · 2.24 KB

Ch-19-1 프로토타입-1


자바스크립트와 객체 지향

  • 자바스크립트를 이루고 있는 거의 모든 것은 객체이다.
  • 프로토타입 기반 객체지향 프로그래밍 언어이다.

객체 지향 프로그래밍

  • 실체는 특성이나 성질을 나타내는 속성
  • 필요한 속성만 간추려 추상화
  • 객체란, 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료 구조

상속과 프로토타입

  • 자바스크립트는 동일 코드와 같은 불필요한 중복을 제거하기 위해서, 프로토타입 기반 상송을 구현할 수 있다.
  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);
  • 위와 같은 경우
    1. Circle 생성자 함수가 cirlce1, cirlce2fmf todtjdgksek.
    2. 각각 Circle.protytpe(프로토타입 객체)를 상속받기에, getArea 메소드도 상속받아서 사용 가능하다.

프로토타입 객체

  • 어떤 객체의 상위 객체의 역할을 하는 객체로서 다른 객체에 공유 프로퍼티를 제공한다.
    1. 모든 객체는 [[Prototype]]이라는 내부 슬롯을 가지며
    2. 이 내부 슬롯의 값은 프로토타입의 참조(null인 경우도 있음)다.
    3. [[Prototype]]에 저장되는 프로토타입은 객체 생성 방식에 의해 결정된다. ex) 객체 리터럴ㄹ로 생성된 객체 프로토타입은 Object.prototype이다.

__proto__ 접근자 프로퍼티

  • 모든 객체는 __proto__ 접근자 프로퍼티를 통해, 자신의 프로토 타입, 즉 [[Prototype]]의 내부 슬롯에 간접적으로 접근할 수 있다.

정리

구분 소유 사용 주체 사용 목적
__proto__접근자 프로퍼티 모든 객체 프로토타입의 참조 모든 객체 객체가 자신의 프로토타입의 접근 또는 교체하기 위해
prototype 프로퍼티 constructor 프로토타입의 참조 생성자 함수 생성자 함수가 자신이 생성할 객체(인스턴스)의 프로토타입을 할당하기 위해