우리가 알고 있는 기본적인 함수의 호출 방법은 아래와 같다.
하지만 JS는 함수를 호출하는 또다른 특별한 방법을 제공한다.
함수는 기본적으로 객체이다. 때문에 위의 예제에서 함수 func는 Function이라는 객체의 인스턴트이다. 따라서 func는 객체 Function이 가지고 있는 메소드들을 상속하고 있는 것이다. 지금부터 알아볼 함수를 호출하는 다른 방법은 함수의 메소드를 이용한 방법이다.
<Function.apply>
Function.apply에서 Function바로 뒤에 찍히는 점 뒤에는 수많은 기능들이 올 수 있는데 이러한 기능들을 메소드라고 한다. 그중에서도 apply 메소드에 대해서 알아보자.
▲ 기본적인 합계 함수를 생성하고 사용하면 다음과 같이 결과값이 나온다.
같은 결과값을 얻을 수 있는 방법은 apply를 사용하는 것인데 아래의 예시와 같다.
▲ 보다시피 sum.apply라는 메소드를 이용하였고 첫번째 인자(arguments)로는 '없다'라는 뜻의 null을, 두번째 인자로는 배열안에 1과 2를 패키징해서 입력하였다. 결과는 동일하게 3이 나온다.
이는 배열안의 1과 2를 함수 sum의 리턴로직으로 출력하였기 때문이다.
하지만 굳이 이렇게 복잡한 코드를 쓸 이유가 있을까? 물론 위의 예제처럼 단순한 경우에는 오히려 apply는 독이된다.
아래의 예제와 같은 경우에 우리는 함수의 메소드를 사용하는 것이다.
▲ 19행과 20행에서 보듯이 sum.apply 메소드의 인자값으로 객체를 주었다. 이 경우 this가 가리키는 것은 객체 o1과o2이다.
'JavaScript > Javascript' 카테고리의 다른 글
this (0) | 2022.02.20 |
---|---|
생성자와 new (0) | 2022.02.20 |
인자(arguments) (0) | 2022.02.19 |
클로저(Closure) (0) | 2022.02.19 |
콜백(Call back) 함수 (0) | 2022.02.19 |