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