함수와 일급 객체 (Firstclass Object)

Posted by Seongkyun Yu on 2020-03-03
Estimated Reading Time 1 Minutes
Words 181 In Total
Viewed Times

1. 일급 객체


일급 객체의 조건은 다음과 같다.
  • 무명의 리터럴로 생성할 수 있다.(런타임에 생성 가능)
  • 변수나 자료 구조(객체, 배열 등)에 저장할 수 있다.
  • 함수의 매개 변수에게 전달할 수 있다.
  • 함수의 결과값으로 반환할 수 있다.


2. 함수 객체의 프로퍼티

  • arguments 프로퍼티
    함수 호출시 전달된 인수들의 정보를 담고 있는 순회 가능한 유사배열 객체.
    함수 몸체 내부에서 변수와 동일하게 취급 됨.
    변수 개수를 지정하지 않고 쓰는 법은 다음과 같다.

    1
    2
    3
    function sum(...args) {
    return args.reduce((pre, cur) => pre + cur, 0);
    }
  • length 프로퍼티
    argument.length : 인자의 개수
    함수.length : 매개변수의 개수

  • name 프로퍼티
    기명 함수 표현식 : 함수이름
    익명 함수 표현식 :

    • ES5 -> 빈문자열

    • ES6 -> 함수 식별자

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      // 기명 함수 표현식
      var namedFunc = function foo() {};
      console.log(namedFunc.name); // foo

      // 익명 함수 표현식
      var anonymousFunc = function () {};
      // ES5: name 프로퍼티는 빈 문자열을 값으로 갖는다.
      // ES6: name 프로퍼티는 함수 객체를 가리키는 변수 이름을 값으로 갖는다.
      console.log(anonymousFunc.name); // anonymousFunc

      // 함수 선언문(Function declaration)
      function bar() {}
      console.log(bar.name); // bar
  • __proto__ 접근자 프로퍼티

    [[Prototype]] 내부 슬롯에 접근하기 위한 접근자 프로퍼티.

  • prototype 프로퍼티

    함수 객체만이 소유하는 프로퍼티.


참고자료: poiemaweb.com


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !