>

내 질문은 :

function Foo()
{
   this.foo = "bar"; // <- What is "this" here?
}

내가 말할 수있는 것은 Foo 방법에 달려 있습니다.  생성자 또는 함수로 사용됩니다. this 할 수있는 것  다른 상황에 처해 있습니까?

  • 답변 # 1

    와이즈 비즈  키워드는 함수가 속한 객체 또는 this 를 나타냅니다.  함수가 객체가 아닌 경우 객체.

    함수가 속한 클래스/객체를 참조하기 위해 OOP 코드에서 사용됩니다. 예를 들면 다음과 같습니다.

    window
    
    

    알림 : function foo() { this.value = 'Hello, world'; this.bar = function() { alert(this.value); } } var inst = new foo(); inst.bar();

    Hello, world 개체를 조작 할 수 있습니다   this 를 사용하여 참조  또는 apply()  기능.(때때로 매우 편리한 기능)

    call()
    
    

  • 답변 # 2

    이 문제에 대해 Douglas Crockford의 의견을 읽고 JavaScript 프로그래밍 언어 설문 조사에서 인용하십시오 :

    와이즈 비즈

    또한 '이것'은 함수가 어떻게 호출되는지에 따라 변경 될 수 있습니다. 적용 함수를 읽고 읽고 함수를 호출하십시오.

    여기에서 링크 된 그의 (무료) 프레젠테이션에서 JavaScript의 가장 위대한 생각 중 하나를 배우는 데 시간을 보내는 것이 좋습니다.

  • 답변 # 3

    자바 스크립트에서, 협약 (그리고 이것은 단지 협약 일뿐입니다)은 대문자로 시작하는 모든 함수는 생성자로 사용됩니다. 그러면 전화 할 것입니다

    var bar1 = new function() { this.value = '#1'; } var bar2 = new function() { this.value = '#2'; } function foo() { alert(this.value); } foo.call(bar1); // Output: #1 foo.apply(bar2, []); // Output: #2  그리고

    A function is an object. It can contain members just as other objects. This allows a function to contain its own data tables. It also allows an object to act as a class, containing a constructor and a set of related methods.

    A function can be a member of an object. When a function is a member of an object, it is called a method. There is a special variable, called this that is set to the object when a method of the object is called.

    For example, in the expression foo.bar(), the this variable is set to the object foo as a sort of extra argument for the function bar. The function bar can then refer to this to access the object of interest.

    In a deeper expression like do.re.mi.fa(), the this variable is set to the object do.re.mi, not to the object do. In a simple function call, this is set to the Global Object (aka window), which is not very useful. The correct behavior should have been to preserve the current value of this, particularly when calling inner functions.

      var foo = new Foo() 가 참조하려고하는 새로 작성된 오브젝트를 참조합니다. .

    물론, this 를 부르는 것을 막을 수있는 것은 없습니다  그 자체로 foo  그런 다음 함수가 호출 된 객체를 참조합니다. 혼동을 피하기 위해 권장하지 않습니다.

  • 답변 # 4

    기능 사용 방법에 따라 기능을 사용할 수있는 두 가지 기본 유형이 있습니다

    <올>

    기능

    새 키워드를 사용하여 객체로서의 기능

    하나씩 볼 것이다

    1. 기능

    Foo()
    
    

    여기서 'this'키워드는 창 개체를 가리 킵니다.

    기본적으로 이것은 항상 전역 오브젝트 인 루트를 나타내는 창 오브젝트 여야합니다. 그래서 우리가 console.log (this);함수가 창에서 호출 한 것처럼 (간단히 호출 됨)이 값이 창 개체가 될 것으로 예상합니다.

    2. 객체로서의 기능

    this
    
    

    여기서 'this'키워드는 새로 생성 된 예제 객체를 가리 킵니다.

  • 답변 # 5

    JavaScript에서는 모든 것이 객체조차 기능입니다. 말할 때 var example = function () { console.log(this); }; example(); Output : window  다음 코드에서

    var example = function () {
      console.log(this);
    };
    var obj = new example();
    Output : example {}
    
    

    this.foo   function Foo() { this.foo = "bar"; // <- What is "this" here? } 의 멤버 변수가 됨  개체

    foo

관련 자료

  • 이전 php - 의존성 지옥 — 어떻게 깊이 중첩 된 객체에 의존성을 전달합니까?
  • 다음 c# - 파일 또는 어셈블리 'MicrosoftReportViewerCommon, Version = 11000을로드 할 수 없습니다