18.1 일급 객체
일급객체 조건
•
무명의 리터럴로 생성가능(= 런타임에 생성 가능)
•
변수나 자료구조(객체, 배열 등)에 저장 가능
•
함수의 매개변수에 전달 가능
•
함수의 반환값으로 사용 가능
→ 자바스크립트의 함수는 모든 조건을 만족하므로 일급객체
합수가 일급객체라는 말은 함수를 객체와 동일하게 사용가능하다는 말.
함수를 값과 동일하게 취급 가능(변수 할당문, 객체의 프로퍼티 값, 배열의 요소, 함수 호출의 인수, 함수 반환문)
18.2 함수 객체의 프로퍼티
arguments, caller, length, name, prototype: 함수 객체 고유의 데이터 프로퍼티
__proto__: 접근자 프로퍼티, Object.prototype 객체의 프로퍼티를 상속받음
arguments
함수 호출 시 전달된 인수들의 정보를 담고 있는 순회 가능한 유사 배열 객체
초과된 인수는 버려지지 않고, arguments 객체의 프로퍼티로 보관됨
- callee 프로퍼티: 함수 자신
- length 프로퍼티: 인수(argument)의 개수
length 프로퍼티
함수를 정의할 때 선언한 매개변수(parameter)의 개수
* arguments의 length 프로퍼티(argument)와 함수 객체의 length(parameter) 프로퍼티의 값은 다를 수 있으므로 주의
name 프로퍼티
함수의 이름을 나타냄
__proto__ 접근자 프로퍼티
[[Prototype]] 내부 슬롯이 가리키는 프로토타입 객체에 접근하기 위해 사용하는 접근자 프로퍼티
prototype 프로퍼티
함수가 생성자 함수로 호출될 때 생성자 함수가 생성할 인스턴스의 프로토타입 객체를 가리킴
생성자 함수로 호출할 수 있는 함수 객체, 즉 constructor만이 소유하는 프로퍼티
caller 프로퍼티
함수 자신을 호출한 함수
ECMAScript 사양에 포함되지 않은 비표준 프로퍼티, 표준화될 예정도 없으므로 참고만하십숑