4가지 만족 시 일급 객체
일반 객체에는 없는 함수 객체 고유의 프로퍼티 : arguments,caller,length,name,prototype
arguments 프로퍼티의 값은 arguments객체
arguments객체는 함수에 전달된 인수를 갖고있는 유사 배열 객체(키:인덱스,값:인수)
유사 배열 객체 : length프로퍼티가 있어서 for문으로 순회가 가능한 객체
함수 내부에서만 참조가능
함수를 정의할 때 선언한 매개변수는 함수 내부에서 변수처럼 동작
함수가 호출되면 암묵적으로 매개변수가 선언,undefined로 초기화 그 이후 인수 할당
가변 인자 함수에서 유용하지만 ES6 Rest파라미터로 대체 가능
function total(){
let sum=0;
for(let i=0;i<arguments.length;i++){
sum+=arguments[i];
}
return sum;
}
function total2(...res){
let sum=0;
res.forEach((x)=>sum+=x);
return sum;
}
함수 자신을 호출한 함수를 가르킴
호출한 함수가 없다면 null
함수를 정의할 때 선언한 매개변수의 개수
함수의 이름을 나타냄
익명 함수이면 ES5에서는 '',ES6에서는 그 함수 객체를 가르키는 식별자
함수를 호출할 때는 함수의 이름이 아닌 함수 객체를 가르키는 식별자로 호출
모든 객체는 [[Prototype]] 내부 슬롯을 갖음
[[Prototype]]은 상속을 구현하는 프로토타입 객체를 가르킴
이 내부슬롯에 간접적으로 접근하기 위한 접근자 프로퍼티임
constructor만 소유하는 프로퍼티
일반 객체와 생성자 함수로 호출할 수 없는 객체는 없음
생성자 함수로써 호출되면 앞으로 생성할 인스턴스의 프로토타입 객체를 가르킴