this의 값이 설정되는 경우
JavaScript에서는 함수가 어떻게 호출되는지에 따라 this의 값이 결정됩니다. 이를 설정하는 6가지 기본 방법이 있습니다.
-
일반 함수 호출: 이는 전역 개체(예: 브라우저의 창)로 설정되거나 엄격 모드에서 정의되지 않습니다.
-
메소드 호출: 메소드가 호출되는 객체로 설정됩니다.
-
.apply() 또는 .call(): 이 첫 번째 인수로 전달된 객체로 설정됩니다.
-
new 연산자: new로 함수를 호출하면 새 객체가 생성되고 이것이 해당 객체로 설정됩니다.
-
.bind(): this가 첫 번째 인수로 전달된 객체에 바인딩되는 새 스텁 함수를 생성합니다.
-
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!