LHJ

I'm a FE developer.

11-1. Function 오브젝트 / 프로퍼티 리스트, Function 인스턴스 생성

30 Nov 2020 » js_beginner

11-1. Function 오브젝트 / 프로퍼티 리스트, Function 인스턴스 생성

이번장은 빌트인 Function 오브젝트입니다.

빌트인 Function 오브젝트의 프로퍼티 리스트입니다.

FUnction

  • new Function() : 인스턴스 생성
  • Function() : 인스턴스 생성

new Function()도 인스턴스를 만들고 Function() 또한 인스턴스를 만듭니다.
new 연산자를 사용 안한 것 뿐입니다.
빌트인 Object 오브젝트와 같습니다.

new 연산자를 사용해 인스턴스를 생성할 때 자바스크립트 엔진에선 Function.prototype.constructor 생성자 함수를 호출해 인스턴스를 생성합니다.

Function 프로퍼티

  • length : 함수의 파라미터 수

Function.prototype

  • constructor : 생성자
  • call() : 함수 호출
  • apply() : 함수 호출 - 배열을 파라미터로 사용
  • toString() : 함수를 문자열로 반환
  • bind() : 새로운 오브젝트를 생성하고 함수 실행

call()은 함수를 호출하는 기능을 합니다.
apply()는 함수 호출하는 것은 같은데, 파라미터를 배열로 작성합니다.
call()파라미터를 단일 값으로 작성합니다.

bind() 메소드는 새로운 오브젝트를 생성하고 함수를 실행합니다.
일반적으로 함수는 호출하면 바로 실행됩니다.
그런데 bind() 메소드는 오브젝트를 생성하는 것과 함수를 실행하는 것이 나뉘어져 있습니다.
즉, 오브젝트를 먼저 생성하고 ;(세미콜론), (여기서 문장 끝이라는 뜻같음)
그리고 문장을 바꿔서 생성한 오브젝트를 호출하면 그때 함수가 실행됩니다.

이것은 단계적으로 설명할 필요가 있어서 비기너 과정에서 다루지 않고 중고급 과정에서 다룹니다.

new Function()

구분데이터(값)
파라미터첫번째 파라미터 : 파라미터opt
두번째 파라미터 : 실행 가능한 JS 코드opt
반환생성한 Function 인스턴스

  • Function 인스턴스 생성
  • 파라미터에 문자열로 함수의 파라미터와 함수 코드 작성

    • var obj = new Function(“book”, “return book”);
      return book은 함수 블록의 코드입니다.
      문자열로 작성합니다.
    • obj(“JS책”);
    • 파라미터 수에 따라 인스턴스 생성 기준이 다름
      new Function은 파라미터 수에 따라 인스턴스 생성 기준이 다릅니다.

  • 파라미터 2개 이상 작성

    • 마지막 파라미터에 함수에서 실행할 함수 코드 작성
    • 마지막을 제외한 파라미터에 이름 작성

        var obj = new Function("one", "two", "return one + two;");
        console.log(obj(100, 200)); // 300
      
      1. 파라미터를 3개 작성했으며
      2. 1번째와 2번째는 호출한 곳에서 넘겨준 값을 매핑할 파라미터 이름을 작성
      3. 3번째는 호출되었을 때 실행될 함수 코드

  • 파라미터 하나 작성

    • 함수에서 실행할 함수 코드 작성
    • 파라미터가 없을 때 사용

        var obj = new Function("return 1 + 2;");
        console.log(obj()); // 3
      

  • 파라미터를 작성하지 않으면

    • 함수 코드가 없는 Function 인스턴스 생성

Function()

구분데이터(값)
파라미터첫번째 파라미터 : 파라미터opt
두번째 파라미터 : 실행 가능한 JS 코드opt
반환생성한 Function 인스턴스

  • Function 인스턴스 생성
  • 처리 방법과 파라미터 작성이 new Function()과 같음
  • 단지 new 연산자를 사용하지 않은 것