1. this


this의 값은 함수를 호출하는 방법에 의해 결정된다.

호출되는 방법과 무관하게 this를 고정시키는 bind 메소드가 있다.

ex)

const someone = {
  name : "codeman",
  getInfo : function(){
		console.log(this);
  }
}
// someone.getInfo() => {name: 'codeman', getInfo: ƒ}
const myGetInfo = someone.getInfo;
myGetInfo();

// myGetInfo() => Window {0: global, window: Window, self: Window, document: document, name: '', location: Location, …}

“호출을 누가 했냐?” 에 따라 달라진다.

someone.getInfo() ⇒ someone이 호출

myGetInfo() ⇒ myGetInfo가 호출(global에 있고 global은 윈도우, 즉 윈도우가 호출한 셈)

ex)

const someone = {
  name : "codeman",
  getInfo : function(){
		console.log(this);
  }
}

const btn = document.getElementById("btn");
btn.addEventListener("click",someone.getInfo); // <button id="btn">...</button>

호출한 놈(객체) === this

2. bind