**call()**과 **apply()**은 함수 호출시 **this**를 명시적으로 지정하고 싶을 때 사용합니다. 그리고 이 때 첫번째 인자로 전달되는 객체가 this객체가 됩니다.
특히, 메소드가 존재하지 않는 유사배열의 경우, Array.prototype으로 부터 메소드를 빌려 실행할 수 있습니다.

func.call()func.apply()은 두 번째 인자부터 파라미터 값들이 전달됩니다. 차이점은 func.call()은 인자들이 각각 전달되고, func.apply()은 배열의 형태로 전달된다는 점입니다.

func.call(this, ...args)
func.apply(this, args)

**bind()**는 call()이나 apply()와 마찬가지로 this 객체 및 인자를 바인딩하나, 당장 실행하는 것이 아니라 단지 바인딩된 함수를 리턴하는 메소드입니다.

func.bind()의 파라미터 값은 call()과 동일한 방식으로 전달됩니다.

func.bind(this, ...args)

bind()의 대표적인 유용 사례는 Event HandlersetTimeout메소드의 콜백함수로 사용될 경우입니다.

자료 출처: 코드스테이츠(CodeStates)

0개의 댓글