sharingStorage

모던 자바스크립트 18장 일급객체 본문

Front-End/모던 자바스크립트 Deep Dive

모던 자바스크립트 18장 일급객체

Anstrengung 2022. 6. 20. 14:37

18.1 일급 객체

일급 객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 

일급 객체는 다음과 같은 조건을 만족해야한다.

  1. 무명의 리터럴로 생성할 수 있다. 즉 런타임에 생성이 가능하다.
  2. 변수나 자료구조에 저장할 수 있다.
  3. 함수의 매개변수에 전달할 수 있다.
  4. 함수의 반환값으로 사용할 수 있다.

일반 객체는 호출할 수 없지만 함수객체는 호출할 수 있으며

함수 객체는 일반 객체에는 없는 함수 고유의 프로퍼티를 소유한다.

 

 

18.2 함수 객체의 프로퍼티

console.dir 메서드를 사용하면 함수 객체 내부를 들여다볼 수 있다.

 

 

18.2.1 arguments 객체

선언된 매개변수의 개수와 함수를 호출할 때 전달하는 인수의 개수를 확인하지 않는 자바스크립트의 특성 때문에 함수가 호출되면 인수 개수를 확인하고 이에 따라 함수의 동작을 달리 정의할 필요가 있다.

이때 유용하게 사용하는 것이 arguments 객체이다.

 

 arguments 객체는 매개변수 개수를 확정할 수 없는 가변인자 함수를 구현할 때 유용하다.

arguments객체는 배열 형태로 인자 정보를 담고 있지만 실제 배열이 아닌 유사 배열 객체이다.

유사 배열 객체는 마치 배열처럼 인덱스로 프로퍼티 값에 접근할 수 있고, length 프로퍼티를 갖는 객체를 말한다. 

하지만 배열처럼 pushpopjoinmap과 같은 메서드 사용은 불가하며, 일반 객체처럼 프로퍼티로 접근할 수 없다.

유사 배열 객체

 

유사 배열 객체는 배열이 아니므로 배열 메서드를 사용할 경우 에러가 발생한다. 따라서 배열 메서드를 사용하려면 Fuction.prototype.call, Fuction.prototype.apply를 사용해 간접 호출해야 하는 번거로움이 있다.

 

ES6에선 Rest 파라미터를 도입하여 번거로움을 해결할 수 있지만 언제나 ES6만 사용하진 않을터이니 알아둘 필요가 있다

 

Rest 파라미터 사용 예

쉽게 말해 앞에 할당된 인수를 제외한 나머지를 배열에 할당하는 것이다. Rest파라미터는 반드시 마지막 파라미터이어야만 한다. 

 

 

18.2.3 length 프로퍼티

함수 객체의 length 프러퍼티는 매개변수의 개수를 가리키고

arguments객체의 length 프로퍼티는 인자의 개수를 나타낸다.

함수 객체의 length 프로퍼티

 

 

Reference

Comments