> 웹 프론트엔드 > JS 튜토리얼 > Javascript `call()` 및 `apply()` 대 `bind()`: 언제 어느 것을 사용해야 합니까?

Javascript `call()` 및 `apply()` 대 `bind()`: 언제 어느 것을 사용해야 합니까?

Linda Hamilton
풀어 주다: 2024-12-02 00:07:16
원래의
226명이 탐색했습니다.

Javascript `call()` & `apply()` vs. `bind()`: When Should You Use Which?

Javascript: call() & apply() 대 바인딩() 재검토

call() 및 apply()를 사용하면 변경할 수 있습니다. 함수의 컨텍스트를 확인하고 인수를 수동으로 또는 배열로 전달하는 경우, 바인딩() 메서드는 고유한 기능을 제공합니다.

bind() 사용 시기

Bind는 나중에 실행하기 위해 미리 정의된 컨텍스트를 사용하여 함수를 생성해야 할 때 특히 유용합니다. 함수를 즉시 호출하는 call() 또는 apply()와 달리, 바인딩은 지정된 컨텍스트 세트를 사용하여 새 함수를 반환합니다.

다음 예에서는 차이점을 보여줍니다.

var obj = {
  x: 81,
  getX: function() {
    return this.x;
  }
};

alert(obj.getX.bind(obj)()); // 81
alert(obj.getX.call(obj)); // 81
alert(obj.getX.apply(obj)); // 81
로그인 후 복사

이에서 예를 들어, 바인딩()은 실행 시 항상 해당 컨텍스트가 obj 개체로 설정되는 새 함수를 만듭니다. 이는 함수 컨텍스트가 모호해질 수 있는 이벤트 리스너에서 특히 유용합니다.

사용 사례

  • 이벤트 리스너: 비동기에서 올바른 객체 참조를 유지하기 위한 이벤트 핸들러의 컨텍스트 callbacks.
  • 비동기 콜백: 비동기 Node.js 콜백에서 원래 함수의 컨텍스트를 유지합니다.
  • Currying: 다음을 사용하여 새 함수를 만듭니다. 함수의 원본을 유지하면서 고정된 인수 집합 context.

예:

function MyObject(element) {
  this.elm = element;

  element.addEventListener('click', this.onClick.bind(this), false);
}

MyObject.prototype.onClick = function(e) {
  var t = this; // do something with [t]...
  // Without bind, the context of this function would be different.
};
로그인 후 복사

결론

Bind를 사용하면 사전 정의된 컨텍스트로 함수를 생성할 수 있습니다. , 이벤트 처리, 비동기 프로그래밍 및 컨텍스트 유지가 중요한 기타 시나리오에서 특히 유용합니다. call() 및 apply()는 즉각적인 함수 호출을 제공하는 반면, 바인드는 고정된 컨텍스트로 나중에 실행하기 위한 함수를 반환합니다.

위 내용은 Javascript `call()` 및 `apply()` 대 `bind()`: 언제 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿