키다리 개발자

Javascript this란? (bind, call, apply) 본문

Javascript

Javascript this란? (bind, call, apply)

JunBucks 2020. 2. 18. 14:07
apply와 call 메서드

Function 객체의 메서드에는 apply와 call이 있습니다.

 

this 값과 함수의 인수를 사용하여 함수를 실행하는 메서드입니다.

 

apply와 call의 동작은 본질적으로는 같습니다.

 

차이점은 함수에 인수를 넘기는 방법 뿐인데, apply의 인수는 배열이고 call의 인수는 쉼표로 구분한 값의 목록입니다.

 

 

이처럼 apply와 call 메서드의 첫 번째 인수는 함수의 this 값 입니다.

 

apply 메서드의 두번째 인수는 함수의 인수를 순서대로 담은 배열이며, 실제 배열 객체 대신 유사 배열 객체를 넘겨도

동작합니다.

 

예를 들어 현재 실행 중인 함수의 arguments를 apply 메서드에 넘겨도 실행할 수 있습니다.

 

call 메서드의 두 번째 이후 인수는 함수의 인수 목록입니다.

 

따라서, apply와 call은 this값을 반환(수정) 시켜주며, 실행까지 한번에 다 해주어 결과값을 출력합니다.

 

 

bind 메서드

Function 객체의 bind 메서드는 객체에 함수를 바인드(묶다)합니다.

 

 

이 코드에서 sayToWoody 함수를 호출하면 항상 this가 객체 woody를 가리킵니다.

 

이처럼 say.bind(woody)는 woody객체를 함수 say의 this로 설정한 새로운 함수를 만들어서 반환합니다.

 

따라서 this의 값을 반환(수정)까지만 할 뿐, 실행은 따로 해주어야 합니다.

Comments