fffo
함수의 일급 객체 본문
함수의 일급 객체
일급 객체의 조건
- 무명의 리터럴로 생성 가능(런타임에 생성 가능)
- 변수나 자료구조(객체, 배열 등)에 저장 가능
- 함수의 매개변수에 전달 가능
- 함수의 반환값으로 사용 가능
함수 객체의 프로퍼티
arguments
- 함수 호출 시 전달된 인수의 정보를 담고 있는 유사 배열 객체이자 이터러블 자료구조
- 함수 내부에서 지역 변수처럼 사용, 외부에서 참조 불가
- arguments 프로퍼티로서 사용하는 방법은 ES3부터 표준에서 폐지됨. 함수 내부에서 지역 변수처럼만 사용 권장
- js는 선언된 매개변수의 개수와 함수 호출 시 전달되는 인수의 개수를 확인하지 않으므로 인수 개수를 확인하는 동작 시 arguments 객체를 활용. 가변 인자 함수 구현 용이
- ES6에서 나온 Rest 파라미터로 가변 인자 함수 구현 시 arguments 객체 대체 가능
function sum() {
const arr = Array.prototype.slice.call(arguments);
return arr.reduce(function (pre, cur) {
return pre + cur;
}, 0);
}
function sumES6(...args) {
return args.reduce((pre,cur) => pre + cur, 0);
}
caller
- ECMAScript 사양에 포함되지 않은 비표준 프로퍼티
- 함수 자신을 호출한 함수를 가리킴
length
- 함수를 정의할 때 선언한 매개변수의 개수
- arguments 객체의 length 프로퍼티와 함수 객체의 length 프로퍼티의 값은 다를 수 있음에 유의
name
- 함수의 이름을 나타냄
- ES6에 정식 표준이 됨
- ES5와 ES6에서 동작이 다름
- 익명 함수 표현식에서 ES5는 빈 문자열, ES6은 함수 객체를 가리키는 식별자 값
proto 접근자 프로퍼티
- [[Prototype]] 내부 슬롯이 가리키는 프로토타입 객체에 접근하기 위해 사용하는 접근자 프로퍼티
prototype
- 생성자 함수가 생성할 인스턴스의 프로토타입 객체를 가리킴
- 생성자 함수로 호출할 수 있는 함수 객체만 가짐
'Programming > Javascript' 카테고리의 다른 글
strict mode (0) | 2021.10.04 |
---|---|
프로토타입 (0) | 2021.10.03 |
생성자 함수에 의한 객체 생성 (0) | 2021.10.01 |
프로퍼티 어트리뷰트 (0) | 2021.09.30 |
전역변수의 문제점 / let, const 키워드와 블록 스코프 (0) | 2021.09.29 |
Comments