1. 일급 객체
다음 조건을 만족한느 객체는 일급 객체이다.
- 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다.
- 변수나 자료구조(객체, 배열 등)에 저장할 수 있다.
- 함수의 매개변수에 전달될 수 있다.
- 함수의 반환값으로 사용할 수 있다.
// 1. 함수는 무명의 리터럴로 생성할 수 있다.
// 2. 함수는 변수에 저장할 수 있다.
// 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다.
const increase = function (num) {
return ++num;
};
const decrease = function (num) {
return --num;
};
// 2. 함수는 객체에 저장할 수 있다.
const auxs = { increase, decrease };
// 3. 함수의 매개변수에 전달할 수 있다.
// 4. 함수의 반환값으로 사용할 수 있다.
function makeConunter(aux) {
let num = 0;
return function () {
num = aux(num);
return num;
};
}
// 3. 함수는 매개변수에게 함수를 전달할 수 있다.
const increaser = makeCounter(auxs.increase);
console.log(increaser); // 1
console.log(increaser); // 2
// 3. 함수는 매개변수에게 함수를 전달할 수 있다.
const decreaser = makeCounter(auxs.decrease);
console.log(decreaser); // -1
console.log(decreaser); // -2
2. 함수 객체의 프로퍼티
함수는 객체이다. 따라서 함수도 프로퍼티를 가질 수 있다. 브라우저 콘솔에서 console.dir() 메서드를 사용하여 함수 객체의 내부를 들여다 보자.
arguments 프로퍼티
함수 객체의 arguments 프로퍼티 값은 arguments 객체다. arguments 객체는 함수 호춣 시 전달된 인수들의 정보를 담고 있느 순회 가능한 유사 배열 객체이며, 함수 내부에서 지역 변수처럼 사용된다. 즉, 함수 외부에서는 참조할 수 없다.
1. caller 프로퍼티
2. length 프로퍼티
3. name 프로퍼티
4. __proto__ 접근자 프로퍼티
5. prototype 프로퍼티
'JavaScript' 카테고리의 다른 글
[모던자바스크립트 Deep Dive] 43장. ajax (0) | 2024.10.10 |
---|---|
[모던자바스크립트 Deep Dive] 42장. 비동기 프로그래밍 (0) | 2024.10.10 |
[모던자바스크립트 Deep Dive] 17장. 생성자 함수에 의한 객체 생성 (1) | 2024.09.29 |
e / e.target / e.target.value (0) | 2024.09.23 |
getComputedStyle() (0) | 2024.09.23 |