생활코딩 javascript

1q2w3e4r·2021년 4월 29일
0
post-custom-banner

this

this는 함수 내에서 함수 호출 맥락(context)를 의미한다.
맥락이라는 것은 상황에 따라서 달라진다는 의미인데
즉 함수를 어떻게 호출하느냐에 따라서 this가 가리키는 대상이 달라진다는 뜻이다.
함수와 객체의 관계가 느슨한 자바스크립트에서 this는 이 둘을 연결시켜주는 실질적인 연결점의 역할을 한다.

function func() {
  if (window === this) {
    console.log("window === this");
  }
}
func();
 
// window === this

여기서 this는 전역객체인 window와 같다.

메소드의 호출

var o = {
  func: function () {
    if (o === this) { //this와 객체인 o가 같은지
      document.write("o === this");
    }
  },
};
o.func();
 
//o === this

생성자의 호출

var funcThis = null;

function Func() {
  funcThis = this;
}
var o1 = Func();
console.log(o1); //undefined
if (funcThis === window) {
  document.write("window <br />");
}

var o2 = new Func();
console.log(o2); //Func {}
if (funcThis === o2) {
  document.write("o2 <br />");
}

만약 Func() 안에서 if(o2 === this) 를 하면 o 객체가 생성되기 이전이므로 false다

apply, call

var o = {}
var p = {}
function func(){
    switch(this){
        case o:
            document.write('o<br />');
            break;
        case p:
            document.write('p<br />');
            break;
        case window:
            document.write('window<br />');
            break;          
    }
}
func(); //this => window
func.apply(o); //this => o를 가리킴
func.apply(p); //this => p를 가리킴

this는 소속 객체를 가리킨다

post-custom-banner

0개의 댓글