JavaScript의 함수는 다른 모든 객체 처럼 속성과 메소드를 가질 수 있으므로, 일급(First-class) 객체입니다. 다른 객체와 함수를 구별 하는 것은 함수는 호출할 수 있다는 점입니다. 즉, Function 객체 입니다.
Function 객체
new Function([arg1[, arg2[, ...argN]],] functionBody)
arg1, arg2, ... argN
쉼표로 구분한 유효한 식별자 목록이어야 한다.
functionBody
함수 정의를 구성하는 JavaScript 문을 담은 문자열.
new 연산자를 사용하지 않고 함수로써 Function을 호출하는 것은 생성자를 호출하는 것과 같습니다. 하지만, new 연산자가 제거됨으로써 코드의 크기를 약간(4 바이트 작게) 줄일 수 있으므로 new 연산자를 사용하지 않은 것이 좋습니다.
속성
Function.arguments : 함수에 전달되는 인수(argument)에 해당하는 배열.
Function.caller : 현재 실행 중인 함수를 호출한 함수를 지정.
Function.length : 함수에 의해 기대되는 인수의 수를 지정합니다.
Function.name : 함수명
Function.displayName : 함수의 표시명.
Function.prototype.constructor : 객체의 프로토타입을 만드는 함수를 지정합니다. 자세한 사항은 Object.prototype.constructor 참조.
메서드
Function.prototype.apply() : 함수를 호출하고 this를 제공된 값으로 설정합니다. 인수는 Array 객체로 전달될 수 있습니다.
Function.prototype.bind() : 호출될때 this를 제공된 값으로 설정하는 새로운 함수를 만듭니다. 새로운 함수가 호출 되었을 때 주어진 순서로 모두 제공되는 성행 인수와 함께
Function.prototype.call() : 함수를 호출하고 this를 제공된 값으로 설정합니다, 인수는 그대로 전달될 수 있습니다.
Function.prototype.toString() : 함수의 소스코드를 나타내는 문자열을 반환합니다.
Function 생성자와 함수 선언의 차이
-> Function 생성자로 만들어지는 함수는 생성 컨텍스트에 대한 클로저(closure)를 생성하지 않습니다. 함수가 실행될 때, 자신의 지역 변수와 전역 변수에만 접근할 수 있으며 Function 생성자가 호출된 그 범위의 변수에는 접근할 수 없습니다.
Promise에 대한 이해를 위해 함수에서 부터 포스팅을 시작하지만, JavaScript의 Function은 Object로 정의되어 있다고 하니 Object의 대한 이해도 필요해 보인다.
'Programming Language > JavaScript' 카테고리의 다른 글
JavaScript - 가비지 컬렉션(Garbage Collection) (0) | 2022.07.08 |
---|---|
JavaScript - 클로저(Closure) (0) | 2022.07.07 |
JavaScript - 변수(Variable) (0) | 2022.07.07 |
JavaScript - 콜백 함수(Callback) (0) | 2022.07.06 |
JavaScript - 객체(Object) (0) | 2022.07.05 |