JavaScript

[자바스크립트] 함수와 일급객체

문승주 2023. 5. 24. 13:00
반응형

 내용은 이웅모 님의 모던 "자바스크립트 DeepDive" 책을 보고 정리한 내용입니다. 저작권 보호를 위해 책의 내용은 요약되었습니다.

 

일급객체의 특징

- 함수를 코드 내에서 이름 없이 직접 생성할 수 있다. 즉 런타임에 생성이 가능하다. (무명의 리터럴로 생성가능하다)
- 변수나 자료구조(객체, 배열)에 저장할 수 있다.
- 함수의 매개변수에 전달할 수 있다.
- 함수의 반환값으로 사용할 수 있다.
- 동적으로 프로퍼티를 추가할 수 있어야 한다. 즉, 일급 객체는 프로퍼티를 가질 수 있으며, 이는 필요에 따라 동적으로 추가할 수 있다.
 
함수 객체의 프로퍼티
- 함수는 개체이므로 프로퍼티를 가질수 있다. 함수 객체의 프로퍼티란 JavaScript에서 함수 객체가 가지는 내장 프로퍼티를 의미하며 이러한 내장 프로퍼티는 함수 객체의 동작을 제어하거나 함수에 대한 정보를 제공한다.
 

1. constructor

- 함수 객체를 생성한 생성자 함수를 참조하는 프로퍼티이다.
 

2. prototype

- 생성자 함수로 호출할 수 있는 함수 객체로 constructor만이 소유하는 프로퍼티이다.
- 프로토타입 객체를 가리키는 프로퍼티로 해당 함수로 생성된 객체들이 상속받는 프로퍼티와 메서드를 포함한다.
 

3. length

함수가 받아들이는 인자의 개수를 나타내는 프로퍼티이다.
 

4. name

함수의 이름을 나타내는 프로퍼티로 익명 함수의 경우에는 빈 문자열로 표시된다.

5. arguments

함수에 전달된 인자를 나타내는 객체이다. arguments 객체는 함수 내부에서 사용할 수 있는 유사 배열 객체로, 함수에 전달된 인자에 접근하는 데 사용된다. (ECMAScript 5 이전의 구식 기능이므로 사용을 지양하고, 대신 Rest parameters나 Spread syntax를 사용하는 것이 좋다.)

6. caller

현재 실행 중인 함수를 호출한 함수를 나타내는 프로퍼티로 strict mode에서는 제한될 수 있습니다.

7. bind(), call(), apply()

함수에 적용할 수 있는 메서드로 이들 메서드를 사용하여 함수의 this 값을 지정하거나 함수를 호출할 수 있다.
 
--proto-- 접근자 프로퍼티

반응형