[TIL] 프로토타입

welcome·2021년 11월 16일

1. 프로토타입


  • 자바스크립트는 프로토타입 기반 언어입니다.

  • 어떤객체를 원형(protype)으로 삼고 이를 복제함으로써 상속과 비슷한 효과를 얻는다.

  • 생성자 함수를 new와 함께 호출하면 인스턴스가 생성되고 생성된 인스턴스는 __proto__ 프로퍼티를 가지는데 __proto__는 생성자함수의 prototype을 참조합니다.(prototype은 객체이며 인스턴스가 사용할 메서드를 저장한다, --proto__도 객체)

  • lion.(__proto__).age = lion.age 즉, __proto__는 생략이 가능하다.

  • __proto__ 가 생성자함수의 prototype을 참조하므로 __proto__는 protype의 메서드도 사용할수 있다.

2. constructor 프로퍼티


  • 생성자함수의 prototype 객체에는 constructor 라는 프로퍼티가 있으며 이 프로퍼티는 생성자함수를 참조한다.(인스턴스의 원형을 알수있다.)

3. 프로토타입 체인


  • prototype 은 객체기 때문에 모든 타입은 object.prototype이 연결된다.
    (즉, 모든타입은 object.prototype의 메서드를 사용할수 있다. )

  • 어떤 데이터의 --proto-- 프로퍼티 내부에 다시 --proto-- 프로퍼티가 연쇄적으로 이어진 것을 프로토타입 체인이라고 하고, 이 체인을 따라 검색하는 것을 프로토타입 체이닝 이라고 한다.

  • 어떤 생성자 함수든 prototype은 객체이기 때문에 object.prototype은 어디서든 접근할수 있으며, 이러한 특징 때문에 객체 전용 메서드는 스태틱하게 담겨있다.

  • 프로토타입 체인은 무한대의 단계를 생성할수도 있다.

참고자료


0개의 댓글