This는 많은 사람들이 헷갈려 합니다. 그러면 어떻게 구별을 해야하는가? This는 호출한 놈
이 누군지 보면 됩니다.
var someone =
{
name: 'bugtype',
showMessage: function() {
console.log(this)
}
}
위와 같은 객체를 만들고 아래와 같이 한번 실행을 해봅시다.
// case 1
var object = someone
object.showMessage();
호출한놈 : object
결과 :
{name: "bugtype", showMessage: ƒ}
// case 2
var object2 = someone.showMessage
console.log(object2)
호출한놈 : window ( console.log )
결과 :
ƒ () { console.log(this) }
// case 3
someone.showMessage()
호출한놈 : someone
결과 :
{name: "bugtype", showMessage: ƒ}
// case 4
var btn = document.getElementById('btn1');
btn.addEventListener('click', someone.showMessage);
호출한놈 : btn
결과 :
<button id="btn1"> click me </button>
// case 5
var btn2 = document.getElementById('btn2');
var bindingSomeone = object2.bind(someone);
btn2.addEventListener('click', bindingSomeone);
호출한놈 : btn
결과 :
{name: "bugtype", showMessage: ƒ}
참고
'Javascript > Javascript' 카테고리의 다른 글
Javascript에서 Array는 Array가 아니다? (0) | 2019.03.31 |
---|---|
자바스크립트가 어떠한 방법으로 비교를 하는가? (Do you know x==y Equality Comparison Algorithm in javascript?) (0) | 2019.03.23 |
apply, call, bind 차이 (0) | 2018.12.22 |