JavaScript에서 \'this\' 바인딩은 언제 필요합니까?

Barbara Streisand
풀어 주다: 2024-10-24 12:47:02
원래의
752명이 탐색했습니다.
When is Binding 그러나 함수가 콜백이나 이벤트 핸들러로 전달되면 외부 코드에서 해당 함수를 호출하므로 예상치 못한 "this" 값이 발생합니다. "this"가 특정 개체를 참조하는지 확인하려면 .bind 메서드를 사용할 수 있습니다.

.bind를 사용하면 함수를 호출하기 전에 "this" 값을 설정하여 해당 개체에 효과적으로 바인딩할 수 있습니다.

"this" 문제가 존재하는 이유는 무엇입니까?

이 문제는 JavaScript의 실행 환경이 "this"의 값을 결정하는 방식에서 발생합니다. 함수가 정의되면 "this"는 정의되지 않습니다. 함수가 객체의 메서드로 호출되는 경우 "this"는 해당 객체를 참조합니다.

그러나 함수가 독립적으로 호출되거나 콜백으로 호출되는 경우 "this"는 일반적으로 전역 객체를 참조합니다. (또는 엄격 모드에서는 정의되지 않음) 일관성과 올바른 동작을 보장하려면 .bind와 같은 메서드를 통해 "this" 값을 제어하는 ​​것이 중요합니다.

예제 3과 예 1/2

예제 3에서는 storeMyName3이 직접 호출합니다. myName.name의 값을 반환하는 getName 함수. 이 결과는 함수가 아니라 값인 storeMyName3에 할당됩니다.

반면, 예제 1과 2에서 storeMyName 및 storeMyName2는 getName 함수 자체에 대한 참조입니다. 이를 호출하면 함수를 실행하고 결과를 얻습니다.

예제 2에서는 함수를 호출하기 전에 .bind(myName)를 사용하여 "this" 값을 myName에 설정합니다. 이렇게 하면 this.name이 myName.name을 참조하게 됩니다.

따라서 예제 3에서는 나중에 함수를 호출하지 않으므로 "this" 문제가 발생하지 않는 반면, 예제 1과 2에서는 .bind가 필요합니다. 나중에 호출할 때 "this" 값을 명시적으로 설정하세요.

위 내용은 JavaScript에서 \'this\' 바인딩은 언제 필요합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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