(Javascript) this

this

자바스크립트의 this는 매우 헷갈리는 개념이다.

상황별로 this가 가리키는 것이 무엇인지 알아보자.

  • 전역공간에서

전역공간에서 this는 전역 객체를 가리킨다.

console.log(this); // Window(전역)를 가리킨다.
  • 함수 내부에서

함수 내부에서의 this는 기본적으로 전역 객체를 가리킨다.

디폴트값으로 전역 객체를 가리킨다.

function a() {
    console.log(this);
}
a(); // Window를 가리킨다.

function b() {
    function c() {
        console.log(this);
    }
    c();
}
b(); // Window를 가리킨다.
  • 메소드 호출시

메소드 호출시에는 메소드를 호출하는 주체를 가리킨다.

메소드명 앞에 있는 객체를 가리킨다.

var a = {
    b: function() {
        console.log(this);
    }
}

a.b(); // this는 b메소드 앞에 있는 객체인 a를 가리킨다.
  • 생성자 함수에서

생성자 함수에서는 인스턴스를 가리킨다.

function Animal(name, legs) {
    this.name = n;
    this.legs = l;
    // 생성자의 this는 인스턴스를 가리킨다.
}
var cat = new Animal('Cat', 4);
console.log(cat);

상황별로 this가 가리키는 대상에 대해 알아보았다.

무엇보다 this가 가리키는 것을 찾기 위해서는 코드의 문맥을 파악하는게 중요할 것 같다.