일급 객체
- 일급 객체란
- 무명의 리터럴로 생성할 수 있다. 즉 동적으로, 런타임에 생성이 가능하다.
- 변수나 자료구조(객체, 배열 등)에 저장할 수 있다.
- 함수의 매개변수에 전달할 수 있다.
- 함수의 반환값으로 사용할 수 있다.
- 함수는 일급 객체이다. 일반 객체와 동일하게 사용할 수 있다.
함수 객체의 프로퍼티
- arguments 프로퍼티
- arguments 프로퍼티의 값은 arguments 객체이다.
- 함수 호출 시 전달된 인수를 저장하는 순회 가능한 유사 배열 객체이다.
- 지역 변수처럼 사용된다.
- 매개변수의 개수보다 인수를 더 많이 전달한 경우 초과된 인수는 무시된다. 하지만 암묵적으로 arguments 객체의 프로퍼티로 보관된다.
- 매개변수 개수를 확정할 수 없는 가변 인자 함수를 구현할 때 유용하다.
- 유사 배열 객체는 배열이 아니므로 배열 메서드를 사용할 경우 에러 발생. 따라서 배열 메서드를 사용하려면 Function.prototype.call / apply 를 사용하여야 한다. (ES6에서 Rest 파라미터 도입으로 사용하기 편해짐)
function sum(...args){ return args.reduece((pre,cur) => pre+cur,0) }
- Caller 프로퍼티
- ECMAScript 사양에 포함되지 않은 비표준 프로퍼티로 별로 중요하지 않음
- 함수 자신을 호출한 함수를 가리킨다.
- length 프로퍼티
- 함수를 정의할 때 선언한 매개변수의 개수를 가르킨다.
- arguments 객체의 length와는 프로퍼티 값이 다를 수 있다.
- name 프로퍼티
- 함수 이름을 나타내는 프로퍼티
- ES6부터 표준이 되었다.
- 함수를 호출할 때는 함수 이름이 아닌 함수 객체를 가리키는 식별자로 호출한다.
- proto 접근자 프로퍼티
- 모든 객체는 [[Prototype]]이라는 내부 슬롯을 가진다. 상속을 구현하는 프로토타입 객체를 가리킨다.
- 프로토타입 객체에 접근하기 위한 접근자 프로퍼티이다.
- prototype 프로퍼티
- 생성자 함수로 호출할 수 있는 함수 객체, 즉 constructor만이 소유하고 있는 객체
- 일반 객체와 non-constructor에는 없다.
'기술 서적 > 하루 30분 모딥다' 카테고리의 다른 글
하루 30분 모던 자바스크립트 딥 다이브 프로토타입2 (0) | 2023.06.26 |
---|---|
하루 30분 모던 자바스크립트 딥 다이브 프로토타입1 (0) | 2023.06.22 |
하루 30분 모던 자바스크립트 딥 다이브. 생성자 함수에 의한 객체 생성 (0) | 2023.06.20 |
하루 30분 모던 자바스크립트 딥 다이브. 프로퍼티 어트리뷰트 (0) | 2023.06.19 |
하루 30분 모던 자바스크립트 딥 다이브. let, const 키워드 (0) | 2023.06.16 |