한 줄 요약
자바스크립트의 경우 함수 호출 방식에 의해 this에 바인딩할 어떤 객체가 동적으로 결정된다. 다시 말해, 함수를 선언할 때 this에 바인딩할 객체가 정적으로 결정되는 것이 아니고, 함수를 호출할 때 함수가 어떻게 호출되었는지에 따라 this에 바인딩할 객체가 동적으로 결정된다.
- 전역 호출(global, window)
- 함수 호출
- 메소드 호출(Object)
- 생성자 호출(new)
- call/apply/bind 호출
호출방식에 따른 this
- 전역 호출
console.log(this)
- 함수 호출
function test(){
console.log(this)
}
test();
- 메소드 호출
const Obj = {
name: '테스트',
call: function(){
console.log(this.name)
}
}
Obj.call();
- 생성자 호출
function Person(name){
this.name = name;
}
var person = new Person('테스트')
person.name;
- call/apply/bind 호출
function test (){
console.log(this.name)
}
var custom = {name: 'call/apply/bind 호출'}
test.call(custom)
test.apply(custom)
test.bind(custom)
함수의 호출 시점/ 호출 방식!!에 따라 this 값 정해짐!!
참조: https://poiemaweb.com/js-this