# 함수 객체

자바스크립트에서 가장 좋은 점 중에 하나는 함수의 구현 부분 입니다. 자바스크립트에서 함수는 대부분 어떤 특성들로 이루어져 있습니다. 함수는 실행 문장들의 집합을 감싸고 있으며 자바스크립트에서 모듈화의 근간입니다. 함수는 코드의 재사용이나 정보의 구성 및 은닉 등에 사용하고 객체의 행위를 지정하는데도 사용합니다.

자바스크립트에서 함수는 객체 입니다. 객체는 이전 포스팅에서도 설명한 것처럼 프로토타입 객체로 숨겨진 연결을 갖는 이름/값 쌍들의 집합체 입니다. 객체 중에서 객체 리터럴로 생성되는 객체는 Object.prototype에 연결됩니다. 반면 함수 객체는 Function.prototype에 연결 됩니다. 또한 모든 함수는 숨겨져 있는 두가지의 속성이 있습니다. 이 속성들은 함수의 문맥(context)과 함수의 행위를 구현하는 코드(code)입니다.

또한 모든 함수 객체는 prototype이라는 속성이 있습니다. 이 속성의 값은 함수 자체를 값으로 갖는 constructor라는 속성이 있는 객체 입니다. 이는 Function.prototype으로 숨겨진 연결과는 구분됩니다.

함수는 객체이기 때문에 다른 값들처럼 사용할 수 있습니다. 함수는 변수나 객체, 배열 등에 저장되며, 다른 함수에 전달하는 인수로도 사용하고, 함수의 반환값으로 사용합니다.