함수형 프로그래밍은 프로그램을 수학적인 함수처럼 작성하는 것인데, 같은 입력값은 항상 같은 출력값을 보장하고 함수 외부 상태는 변경하지 않는 것을 의미합니다. 이렇게 되면 코드 재사용성과 유지보수성이 좋아집니다.
[JavaScript] 클로저(Closures)란 무엇일까? - 하나몬
내부함수가 상위 스코프의 식별자를 참조하고 있고 그 상위 스코프 바깥에서 사용했을 때 그 상위 스코프의 식별자를 수정할 수 없는 형태이다.
자바스크립트의 모든 객체는 그들의 프로토타입으로부터 프로퍼티와 메소드를 상속받습니다. 그래서 자바스크립트의 모든 객체는 프로토타입이라는 객체를 가지고있는데, 이처럼 자바스크립트의 모든 객체는 최소한 하나 이상의 다른 객체로부터 상속을 받으며 이때 상속되는 정보를 제공하는 객체를 프로토타입이라고 합니다.
Prototype Object
함수가 정의될 때 두가지 일이 일어나는데, 하나는 constructor자격이 부여된다는 것입니다. constructor자격이 부여되면 생성자 함수 new를 통해 객체를 만들어낼 수 있습니다.
또 한가지는 Prototype Object가 생성된다는 것입니다. 그리고 생성된 함수는 prototype이라는 속성을 통해 prototype object에 접근할 수 있습니다. prototype object는 일반적인 객체와 같고, 기본속성으로 constructor, proto를 가지고 있습니다.
Prototype Link
자바스크립트의 모든 object는 proto라는 객체를 가지고있는데 이 객체는 생성될때 조상이었던 함수의 prototype object를 가리킵니다.
prototype object는 원래 함수를 가리키기 때문에 이 셋은 모두 연결되어 있고 object prortotype 에 있는 모든 속성을 사용할 수 있습니다.