본문 바로가기

Front/Java Script

함수의 호출(call & apply)

 

함수를 호출하는 방법

1. 함수(파라미터인자) : 가장 기본적인 방법

2. 함수.call(null, 파라미터인자1, 파라미터인자2, ..) : 함수.call()을 생략하여 더 간단하게 호출할 수 있게 한 것이 1번

3. 함수.apply(null, 파라미터인자 배열) : apply의 첫번째 인자를 null로 하고, 두번째 인자를 배열형식으로 한다면 1,2번과 같은 결과가 나온다.

 

 

 

apply의 사용

apply(this로 보내고 싶은 객체, 파라미터인자 배열)

 

const obj = { msg : 'hello' }

function print(){
  console.log(this.msg);
}

print.apply(obj);   // 결과: hello가 출력된다.

 

이것은 흡사 obj안에 print함수를 넣은 것과 같은 효과가 난다.

하지만 확실하게 다른 것은

apply를 통해 this 전체를 출력 한다면 print함수는 출력되지 않을 것이고,

obj.print = print 를 통해 obj의 안에 print함수를 넣는다면 this 전체출력 시 print함수까지 출력될 것이다.

(apply를 통해 해당 함수가 다른 객체의 소유물인 것처럼 실행할 수 있다.)

 

 

만약 apply의 첫번째 인자로 null을 전달하면 apply가 실행된 함수 인스턴스는 전역객체(브라우저에서는 window)를 맥락으로 실행되게 된다.

 

 

 

 

출처

opentutorials.org/course/743/6550