> 웹 프론트엔드 > JS 튜토리얼 > Node.js 모듈, 함수 및 이벤트 리스너에서 'this'는 어떻게 다르게 동작합니까?

Node.js 모듈, 함수 및 이벤트 리스너에서 'this'는 어떻게 다르게 동작합니까?

Barbara Streisand
풀어 주다: 2024-12-01 14:24:14
원래의
387명이 탐색했습니다.

How Does `this` Behave Differently in Node.js Modules, Functions, and Event Listeners?

Node.js 모듈 및 함수의 "this" 이해

Node.js에서 "this"를 사용할 때 해당 내용을 이해하는 것이 중요합니다. 상황에 따라 동작이 달라집니다.

모듈 범위

Node 모듈 내의 최상위 코드에서 "this"는 module.exports와 동일합니다. 보시다시피 이것은 빈 개체입니다.

함수 범위

함수 내에서 "this"는 각 실행 전에 새로 결정됩니다. 해당 값은 함수 호출 방법에 따라 다릅니다.

  • aFunction(): 직접 호출하면 "this"가 전역 개체가 됩니다(비엄격 모드로 인해).
  • aFunction .call(newThis): .call()로 호출되면 "this"가 newThis로 설정됩니다.
  • 이벤트 리스너: 함수가 이벤트 리스너(예: addEventListener)로 사용되며, "this"는 일반적으로 이벤트를 트리거한 요소로 설정됩니다.

노드 모듈 로드

JavaScript 파일을 Node 모듈로 요구할 때 Node 엔진은 파일 코드를 함수 내에 래핑합니다. 이 래퍼 함수는 "this"가 module.exports로 설정된 상태로 호출됩니다.

결론

관찰한 다른 "this" 값은 "this" 사용에서 비롯됩니다. 다른 함수 내부:

  • var a의 첫 번째 "this" = this; Node가 생성한 모듈 래퍼 함수에 속합니다. 여기서 "this"는 module.exports(빈 개체)입니다.
  • aFunction()의 두 번째 "this"는 aFunction 자체에 속하며, 엄격한 조건 없이 실행될 경우 모드에서는 "this"를 전역 객체로 설정합니다.

위 내용은 Node.js 모듈, 함수 및 이벤트 리스너에서 'this'는 어떻게 다르게 동작합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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