https://www.youtube.com/watch?v=KfuyXQLFNW4
- 단독으로 사용했을 때 this
- global object ⇒ window를 가리킨다.
- 함수 내에서 쓴 this
- 함수 내에서 쓴 this도 함수의 주인인 window에게 바인딩 된다.
- function test(){ return this; }
- console.log(test()) // Window
- 메서드 안에서 쓴 this
내부 코드에서 사용된 this는 해당 메서드를 호출한 객체로 바인딩 된다.
- 이벤트 핸들러 안에서 쓴 this
이벤트를 받는 html요소를 가리킨다.
btn.addEventListener(’click’, function(){
console.log(this) // btn
})
- 생성자 안에서 쓴 this
생성하는 객체로 this가 바인딩된다.
function Person(name){
[this.name](http://this.name) = name;
}
let kim = new Person(’kim)
console.log(kim.name) // kim → 생성된 객체에 바인딩 된 kim
- 생성자 new가 없으면 같은 값이어도 window에 바인딩 된 kim이 나온다.
- bind한 this 함수의 this값을 영구히 바꿀 수 있다. bind로 지정한 객체가 this가 된다.
- call / this call 또한 this의 값을 지정해 준다. call() 에서 첫번재 매개변수는 this값을 지정해주고, 후에 오는 매개변수는 call이 호출하는 함수의 매개변수로 사용된다. call이 배열을 매개변수로 받는다면 …스프레드 연산자를 사용해야 한다.
- apply / this call과 마찬가지로 첫번째 매개변수로 오는 값을 this의 값으로 지정해주지만,
apply는 함수에 사용될 매개변수를 배열로 받는다는 것이다. 배열 요소를 함수 매개변수로 사용할 때 유용하다
- 화살표함수 내에서 쓴 this