Gidhub BE Developer

프로토타입(Prototype) 체이닝(Chaining)

2018-11-13
goodGid

  • Array.prototype은 객체이다.

  • 그렇기 때문에 Object 생성자 함수에 new 연산자로 생성된 인스턴스라는 말이다.

  • 따라서 Object의 prototype을 상속받게 된다.

  • 이처럼 빨간선을 따라 연결된 prototype을 Prototype Chaining이라고 한다.

  • 배열에는 toString()이라는 메소드가 없지만

  • Prototype Chaining에 의해 출력이 된다.


  • 만약 내용은 다르지만 이름은 같지만 배열에 직접 할당하면 어떻게 될까?

  • 직접 할당한 메소드가 호출된다.


  • 이번에는 call 메소드를 활용하여 arr을 this로 바인딩 한 후

  • 명시적으로 Array 생성자 함수의 prototype에 있는 toString() 함수와

  • Object 생성자 함수의 prototype에 있는 toString() 함수를 호출해보자.


  • 다음처럼 코드를 수정하면

  • arr.toString()과 arr.__proto__.toString.call(arr)의 결과값은 같게 나온다.

  • arr.__proto__은 Array의 prototype을 가리키기 때문이다.


  • 좀 심화된 예제를 살펴보자.

  • 결과값에 대해 고민해보도록 하자 !

Recommend

Index