총 3가지에 대해 알아보자.
prototype, constructor, __proto__
Array.prototype은 객체이다.
그렇기 때문에 Object 생성자 함수에 new 연산자로 생성된 인스턴스라는 말이다.
따라서 Object의 prototype을 상속받게 된다.
메소드 상속과 관련된 개념을 학습해보자.
다음처럼 Person 생성자 프로토타입에 함수를 생성하자.
클로저는 선언당시에 환경이라고 생각하면 된다.
클로저 개념을 이해하기위해 극단적인 예를 들어보면
만약 함수안에서 값이 1초마다 1씩 증가한다고 할 때
내가 함수를 선언하는 그 순간에 시간이 5초라면
그 함수의 시간은 5초에 머물러있는다.
즉 클로저 개념에 의해 선언 당시의 환경으로 구성되어 있는 것이다.
자바 등의 여러 언어에서는
메소드는 프로퍼티를 Private하게 선언할 수 있는 기능을 제공하는데
JS에서는 제공하지 않는다.
그래서 클로저를 통해 흉내낼 수 있게 된다.