- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Java Script
- 그림으로 배우는 http&network
- 자바스크립트
- JavaScript
- async
- 프론트엔드
- git
- 이터러블
- html
- C++
- 모던 자바스크립트 deep dive
- error
- 모던 자바스크립트
- 상태관리
- Angular
- 네트워크
- es6
- get
- map
- http
- 웹
- deep dive
- js
- 비동기
- 백준 실버
- git error
- 알고리즘
- 백준
- React
- 에러처리
sharingStorage
모던 자바스크립트 18장 일급객체 본문
18.1 일급 객체
일급 객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.
일급 객체는 다음과 같은 조건을 만족해야한다.
- 무명의 리터럴로 생성할 수 있다. 즉 런타임에 생성이 가능하다.
- 변수나 자료구조에 저장할 수 있다.
- 함수의 매개변수에 전달할 수 있다.
- 함수의 반환값으로 사용할 수 있다.
일반 객체는 호출할 수 없지만 함수객체는 호출할 수 있으며
함수 객체는 일반 객체에는 없는 함수 고유의 프로퍼티를 소유한다.
18.2 함수 객체의 프로퍼티
console.dir 메서드를 사용하면 함수 객체 내부를 들여다볼 수 있다.
18.2.1 arguments 객체
선언된 매개변수의 개수와 함수를 호출할 때 전달하는 인수의 개수를 확인하지 않는 자바스크립트의 특성 때문에 함수가 호출되면 인수 개수를 확인하고 이에 따라 함수의 동작을 달리 정의할 필요가 있다.
이때 유용하게 사용하는 것이 arguments 객체이다.
arguments 객체는 매개변수 개수를 확정할 수 없는 가변인자 함수를 구현할 때 유용하다.
arguments객체는 배열 형태로 인자 정보를 담고 있지만 실제 배열이 아닌 유사 배열 객체이다.
유사 배열 객체는 마치 배열처럼 인덱스로 프로퍼티 값에 접근할 수 있고, length 프로퍼티를 갖는 객체를 말한다.
하지만 배열처럼 push, pop, join, map과 같은 메서드 사용은 불가하며, 일반 객체처럼 프로퍼티로 접근할 수 없다.
유사 배열 객체는 배열이 아니므로 배열 메서드를 사용할 경우 에러가 발생한다. 따라서 배열 메서드를 사용하려면 Fuction.prototype.call, Fuction.prototype.apply를 사용해 간접 호출해야 하는 번거로움이 있다.
ES6에선 Rest 파라미터를 도입하여 번거로움을 해결할 수 있지만 언제나 ES6만 사용하진 않을터이니 알아둘 필요가 있다
Rest 파라미터 사용 예
쉽게 말해 앞에 할당된 인수를 제외한 나머지를 배열에 할당하는 것이다. Rest파라미터는 반드시 마지막 파라미터이어야만 한다.
18.2.3 length 프로퍼티
함수 객체의 length 프러퍼티는 매개변수의 개수를 가리키고
arguments객체의 length 프로퍼티는 인자의 개수를 나타낸다.
Reference
- 모던 자바스크립트 Deep Dive
- https://poiemaweb.com/es6-extended-parameter-handling
'Front-End > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
모던 자바스크립트 21장 빌트인 객체 (0) | 2022.06.28 |
---|---|
모던 자바스크립트 19장 프로토타입 (0) | 2022.06.28 |
모던 자바스크립트 17장 생성자 함수에 의한 객체 생성 (0) | 2022.06.20 |
모던 자바스크립트 16장 프로퍼티 어트리뷰트 (0) | 2022.06.19 |
모던 자바스크립트 15장 let, const 키워드와 블록 레벨 스코프 (0) | 2022.06.18 |