18 - 함수와 일급 객체

2022. 9. 13.·🎨 프론트엔드 공부/JS & TS

모던 자바스크립트 Deep Dive 정리

1. 일급 객체

1-1. 일급 객체의 조건 4가지

▶ 무명의 리터럴로 생성 가능

▶ 변수나 자료구조(객체, 배열 등)에 저장 가능

▶ 함수의 매개변수에 전달 가능

▶ 함수의 반환값으로 사용 가능

자바스크립트의 함수는 위의 조건을 모두 만족하므로 일급 객체이다

▶ 즉, 함수를 객체와 동일하게 사용할 수 있다

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

2. 함수 객체의 프로퍼티

2-1. arguments 프로퍼티

▶ 함수 호출시 전달된 인수들의 정보를 담고 있는 순회 가능한 유사배열 객체

★ 유사배열 : length 프로퍼티를 가진 객체로, for 문으로 순회 가능 (대표적으로 문자열)

▷ 배열 메서드를 사용할 수는 없다

 

▷ 함수 내부에서만 참조할 수 있고,  지역 변수처럼 사용됨

▷ 콘솔 예시

 

 

▶ 인수가 매개변수의 숫자보다 많거나 적어도 에러가 발생하지 않음

▷ 우선 모든 인수는 arguments 객체의 프로퍼티로 보관된다

arguments 객체를 활용해 인수 갯수를 확인하고 이에 따라 함수의 동작을 달리 정의할 수 있다

▶ ES6부터 arguments 객체와 비슷한 rest 파라미터가 도입됨

2-2. caller 프로퍼티

▶ 함수 객체의 caller 프로퍼티는 함수 자신을 호출한 함수를 가리킨다 (중첩  함수 형태로 사용)

▶ ECMAScript 사양에 포함되지 않은 비표준 프로퍼티

2-3. length 프로퍼티

▶ 함수를 정의할 때 선언한 매개변수의 갯수를 나타냄

▷ arguments 객체의 length 프로퍼티는 인수의 갯수를 나타내므로 엄연히 다름

2-4. name 프로퍼티

▶ 함수 이름을 나타냄

▷ ES5에서는 무기명 함수가 변수에 저장된 형태에서 빈 문자열을 리턴

▷ ES6에서는 그 변수 이름을 리턴

2-5. __proto__ 접근자 프로퍼티

▶ 모든 객체는 [[prototype]] 이라는 내부 슬롯을 가지며, __proto__ 접근자 프로퍼티를 통해

이에 접근할 수 있다

2-6. prototype 프로퍼티

▶ 생성자 함수로 호출할 수 있는 함수 객체, 즉 constructor만이 소유하는 프로퍼티

▷ prototype 프로퍼티는 생성자 함수가 생성할 인스턴스의 프로토타입 객체를 가리킨다

'🎨 프론트엔드 공부/JS & TS' 카테고리의 다른 글
  • 20 - strict mode
  • 19 - 프로토타입
  • 17 - 생성자 함수에 의한 객체 생성
  • 16 - 프로퍼티 어트리뷰트
지식물원
지식물원
지식이 자라는 식물원!
  • 지식물원
    지식물원
    지식물원
  • 전체
    오늘
    어제
    • 분류 전체보기 (516)
      • 🎨 프론트엔드 공부 (253)
        • JS & TS (92)
        • HTML & CSS (22)
        • React & Next (49)
        • Vue & Nuxt (22)
        • 기타 (68)
      • 🤓 기술 학습 & 공부 기록 (116)
        • Node.js (0)
        • Python (37)
        • 백엔드 (0)
        • 딥러닝 (1)
        • 컴퓨터 일반 (72)
        • 개발 인프라 (6)
      • 👨‍💻 프로젝트 경험 (6)
        • Work (0)
        • Toy (6)
      • ⚙️ 개발 팁 & 노하우 (21)
        • 프론트엔드 (6)
        • 기타 (15)
      • ☕️ 커리어 & 인터뷰 준비 (88)
        • 코딩 테스트 (88)
      • 📰 기술 트렌드 & 생각 정리 (4)
      • 📚 기타 (25)
        • 마케팅 (15)
        • 비개발서적 (10)
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

    • 모바일 접속 시 코드 하이라이팅 깨질 때
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
지식물원
18 - 함수와 일급 객체
상단으로

티스토리툴바