>  기사  >  웹 프론트엔드  >  중첩된 JavaScript 함수에서 \"this\" 포인터는 어떻게 작동합니까?

중첩된 JavaScript 함수에서 \"this\" 포인터는 어떻게 작동합니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-19 06:49:02337검색

How Does the

중첩된 Javascript 함수의 "this" 포인터 동작

객체의 메서드 내에서 중첩된 함수를 정의할 때, "this" 포인터는 이 컨텍스트에서 작동합니다. 다음 코드 조각을 고려하세요.

<code class="javascript">var std_obj = {
  options: { rows: 0, cols: 0 },
  activeEffect: "none",
  displayMe: function () {

    // "this" refers to std_obj
    if (this.activeEffect == "fade") { }

    var doSomeEffects = function () {

      // "this" refers to the window object
      if (this.activeEffect == "fade") { }

    }

    doSomeEffects();
  }
};

std_obj.displayMe();</code>

이 시나리오에서 "this" 포인터는 중첩된 함수 "doSomeEffects()" 내의 "window" 개체를 참조합니다. "std_obj" 개체. 이 동작을 설명하려면 Javascript의 "this" 포인터의 특성을 조사해야 합니다.

Javascript에서 "this" 포인터는 함수가 호출되는 방식에 따라 결정됩니다. 세 가지 기본 메서드가 있습니다.

  • 메서드 호출: someObject.someFunction(arg1, arg2) - "this"는 "someObject"에 할당됩니다.
  • 함수 호출: someFunction.call(someObject, arg1, arg2) - "this"는 "someObject"에 할당됩니다.
  • 함수 적용: someFunction.apply(someObject, [arg1, arg2]) - "this"는 "someObject"에 할당됩니다.

중첩 함수 시나리오에서 "doSomeEffects()" 함수는 "this" 개체를 지정하지 않고 호출됩니다. 결과적으로 "this" 포인터는 기본적으로 전역 개체(일반적으로 "window" 개체)로 설정됩니다. "this"가 원하는 개체를 참조하도록 하려면 "std_obj.displayMe()" 메서드에서 "doSomeEffects()"에 대한 "this" 포인터를 명시적으로 설정해야 합니다.

"this"를 제어하는 ​​원칙을 이해함으로써 " 포인터를 사용하면 개발자는 예상치 못한 동작을 방지하고 모범 사례를 준수하는 코드를 작성할 수 있습니다.

위 내용은 중첩된 JavaScript 함수에서 \"this\" 포인터는 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.