상세 컨텐츠

본문 제목

this - Javascript

Programming/Concept

by 쌩우 2019. 5. 29. 09:58

본문

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를 뜻하게 된다.

'Programming > Concept' 카테고리의 다른 글

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

관련글 더보기

댓글 영역