This란?
: 지금 나를 실행시키는 건 누구인가!?
=> "호출된 함수가 실행된 시점에서 가르키는 객체"
5가지 this binding pattern
1. global or free function - window에 binding
2. call, apply, bind - 적용시킨 객체에 binding
3. constructor - 생성시킨 instance에 binding
4. method - 부모 객체에 binding
*내 프로그램에서 'this' 키워드의 의미를 결정하는 방법은?*
: 함수가 실행된 시점에서 그것이 어떻게 불려지고 평가를 하는지를 본다.
//.call과 .apply는 사전에 binding 되어있는 바꿀 수 없다 function test() { console.log(this.name) } const p1 = {name : 'A'}; const p2 = {name : 'B'}; const A = test.bind(p1); //bind는 동시에 바로 실행시키지는 않는다 A.call(p2) // 'A' //call은 선언과 동시에 실행되는데, A에서는 이미 this가 p1으로 binding 되어있으므로, 새롭게 call로 binding 시킬 수 없다.
Arrow function & this
실행 context에 대한 조금의 이해가 필요하다.
실행 context는 call stack에 실행되는 것들이 쌓이는 것이라고 할 수 있는데,
arrow function은 새로운 stack을 생성하지 않는다.
때문에 arrow function으로 this를 사용하면 arrow function을 감싸고 있는 scope의 기준에서의 this를 뜻하게 된다.
Data structure part.1 - Javascript (0) | 2019.05.29 |
---|---|
memoize (0) | 2019.05.29 |
예외(예기치 못한 에러) 처리하기 - Nodejs (0) | 2019.05.14 |
events 모듈 - Nodejs (0) | 2019.05.14 |
Buffer & Stream - Nodejs (0) | 2019.05.14 |
댓글 영역