일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JS
- Baekjoon
- 자바스크립트
- 자바스크립트 문제 풀이
- 타입스크립트
- 프로그래머스
- Next
- 자바스크립트 연결리스트
- lodash
- 자바스크립트 문제풀이
- 자바스크립트 알고리즘 문제
- JavaScript
- NPM
- react
- 리액트쿼리
- leetcode문제풀이
- 제로베이스
- 리액트
- CSS
- HTML
- til
- 자바스크립트코딩테스트
- 자바스크립트 알고리즘
- Next.js13
- leetcode
- 알고리즘문제풀이
- 프론트엔드
- next13
- 자바스크립트 문제
- stack문제
- Today
- Total
코드노트
자바스크립트 함수 객체 프로퍼티 정리 본문
함수는 객체
함수는 프로퍼티를 가질 수 있다.
- 이렇게 알 수 있듯이 함수를 생성하면 프로퍼티를 가지고 있는걸 볼 수 있다.
모든 프로퍼티의 어트리뷰트를 보게 되면?
arguments, caller, length, name, prototype 데이터 프로퍼티를 볼 수 있다.
함수 객체의 고유의 프로퍼티이다.
arguments
- 함수 호출을 할 때 전달되는 인수의 정보를 담고 있는 유사 배열 객체
* 유사 배열 객체 : length 프로퍼티를 가진 객체로 for문으로 순회할 수 있는 객체, 배열은 아니다. 배열 메서드를 사용하면 에러가 발생
- 함수 내부에서 지역 변수처럼 사용
- 함수 외부에서는 참조 X
- 자바스크립트 함수는 매개변수와 인수의 개수가 달라도 에러가 나지 않는걸 알 수 있다.
* 인수가 적으면 할당되지 않은 인수 값은 undefined, 인수가 많으면 무시되
지만 arguments객체의 프로퍼티로 보관된다.
- 인수는 프로퍼티 값, 인수의 순서를 key
- 자바스크립트는 매개변수 개수와 인수 개수를 확인하지 않기 때문에 인수 개수를 확인하거나 함수의 동작을 컨트롤할 수 있다.
이 때 사용되는 것이 arguments객체라고 볼 수 있다.
* arguments객체는 매개변수 개수를 확정할 수 없는 가변 인자 함수를 구현할 때 유용하게 사용 된다.
caller
- arguments 객체를 생성한 함수, 함수 자신
- ECMAScript사양에 포함 되지 않은 비표준 프로퍼티
length
- 인수의 개수
- 함수 정의시 선언한 매개변수의 개수
- arguments 객체의 length는 인자의 개수
- 함수 객체의 length는 매개변수의 개수
name
- 함수의 이름
- ES6부터 정식 표준으로 인정
- 함수의 이름과 식별자는 다른걸 까먹지 말자! 함수 이름의 스코프는 함수 내부! 함수를 호출하는 건 식별자!
__proto__ 접근자 프로퍼티
- [[ prototype ]] 내부 슬롯은 객체 지향 프로그래밍의 상속을 구현하는 프로토타입 객체를 가르킨다.
- __proto__ 프로퍼티는 내부 슬록이 가리키는 프로토타입 객체에 접근하기 위해 사용하는 접근자 프로퍼티
- 직접 접근할 수 없고 간접적인 방법으로 접근 가능
prototype 프로퍼티
- 생성자 함수로 호출할 수 있는 함수 객체
- constructor만이 소유하는 프로퍼티
- 함수가 객체를 생성하는 생성자 함수로 호출될 때 생성자 함수가 생성할 인스턴스의 프로토타입 객체를 가리킨다.
'Code note > 자바스크립트' 카테고리의 다른 글
자바스크립트 this 이해하기 (1) | 2022.12.21 |
---|---|
프로토타입 기반의 객체지향 언어, 자바스크립트 프로토타입 이해 (0) | 2022.12.19 |
자바스크립트 Object 객체 생성자 함수 (0) | 2022.12.14 |
자바스크립트 프로퍼티 어트리뷰트(내부 슬롯, 내부 메서드) (0) | 2022.12.11 |
변수의 생명 주기 / 전역변수, 지역변수/ var의 문제점 정리, let, const (0) | 2022.12.09 |