> 웹 프론트엔드 > JS 튜토리얼 > 콜백 함수가 호출될 때 `this`의 값은 어떻게 결정되나요?

콜백 함수가 호출될 때 `this`의 값은 어떻게 결정되나요?

Barbara Streisand
풀어 주다: 2024-11-04 03:56:02
원래의
1043명이 탐색했습니다.

What Determines the Value of `this` When a Callback Function Is Called?

this의 값이 설정되는 경우

JavaScript에서는 함수가 어떻게 호출되는지에 따라 this의 값이 결정됩니다. 이를 설정하는 6가지 기본 방법이 있습니다.

  1. 일반 함수 호출: 이는 전역 개체(예: 브라우저의 창)로 설정되거나 엄격 모드에서 정의되지 않습니다.
  2. 메소드 호출: 메소드가 호출되는 객체로 설정됩니다.
  3. .apply() 또는 .call(): 이 첫 번째 인수로 전달된 객체로 설정됩니다.
  4. new 연산자: new로 함수를 호출하면 새 객체가 생성되고 이것이 해당 객체로 설정됩니다.
  5. .bind(): this가 첫 번째 인수로 전달된 객체에 바인딩되는 새 스텁 함수를 생성합니다.
  6. ES6 Fat Arrow 함수: this 포함된 범위의 어휘 값에 바인딩됩니다.

콜백 함수의 사례

귀하의 예에서는:

<code class="javascript">randomFunction(this.sumData.bind(this));</code>
로그인 후 복사
  • this.sumData .bind(this)는 .bind()를 사용하여 이것을 obj 객체에 바인딩합니다.
  • 결과적으로, randomFunction이 콜백 함수를 호출하면 .bind() 때문에 this가 obj로 설정됩니다.
  • this.sumData.bind(this)를 콜백(data)로 바꾸면, randomFunction 내부의 this가 전역 개체로 설정됩니다(또는 엄격 모드에서는 정의되지 않음).

이것은 콜백은 this.sumData.bind(this)에 대한 참조로 전달되지만, randomFunction이 콜백을 호출할 때 일반 함수 호출 규칙에 따라 이를 설정하기 때문입니다.

위 내용은 콜백 함수가 호출될 때 `this`의 값은 어떻게 결정되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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