-
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을 가리키기 때문이다.
- 좀 심화된 예제를 살펴보자.
- 결과값에 대해 고민해보도록 하자 !