生活コードJavaScript


this


これは、関数で関数を呼び出すコンテキスト(context)を意味します.
脈絡は状況によって変化するという意味です.
すなわち,関数をどのように呼び出すかでthisが指すオブジェクトが変化する.
関数とオブジェクトの関係がばらばらなJavaScriptでは,両者を結びつける実際の接続点である.
function func() {
  if (window === this) {
    console.log("window === this");
  }
}
func();
 
// window === 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를 가리킴
これは所属するオブジェクトを指します