일급객체와 함수
일급객체는 리터럴로 생성할 수 있다. 런타임 시 생성된다.
변수나 자료구조에 저장가능하다.
매개변수로 사용 가능하다
메서드로 사용 가능하다.
함수객체의 프로퍼티는 argument, length, __proto__, prototype, caller?, name 등이 있다.
argument는 함수 호출 시 받은 인수를 알 수 있다. 전달 받은 인수를 저장하며, 매개변수를 초과해서 받더라도 초과한 인수 역시 저장한다. argument의 length는 받은 인수의 숫자를 나타낸다. 그러므로 인수의 개수에 따라 행동이 달라지는 구조를 만들 때 유용하다.유사 배열 객체로 배열이 아니므로 배열 메서드를 바로 사용하면 에러가 발생한다. 사용하기 위해선 간접호출을 해야한다.
length 매개변수의 숫자를 알려준다. argument의 length는 인수의 숫자이므로 주의를 해야한다.
__proto__ [[prototype]]라는 내부슬롯이 가리키는 프로토타입 객체에 접근할 수 있다.
prototype 생성자 함수에만 존재한다. 생성자 함수 호출 시 인스턴스의 프로토타입을 가리킨다.
caller? 함수 자신을 호출한 함수를 가리킨다. 호출이 없다면 null이다.
적지 못한 내용
-> name 함수이름을 나타낸다. ES5에서는 함수 이름이 없다면 빈 문자열을 가졌지만 ES6 부터는 식별자를 값으로 갖는다.