본문 바로가기

공부/TIL-D

this는 다음상황에서 어떻게 바인딩 되는지

일단 this는 자기 참조 변수  
사용처는 '함수' 즉 ,this를 안다는것은 함수 호출,함수 실행,문맥 
더 나아가서는 자바스크립트 엔진이 돌아가는 방식을 이해하고 있다(콜스텍)


다만 값은 함수 호출 방식에 의해 동적 결정
바인딩:값과 식별자를 연결
인스턴스:생성자 함수에 의해 생성되는 객체


this는 다음 상황에서 어떻게 바인딩 되는지
토론해 보세요
0)전역에서 호출 - 브라우저 window객체,(전역객체) - node.js -global
1)일반함수 호출 - 브라우저 window객체,(전역객체) - node.js -global
2)내부함수 호출 - 내부함수 더라도, 일반호출이라면 전역객체
3)method 호출  - 메소드를 호출한 객체( .앞에)
4)생성자 함수호출 -생성자 함수가 생성할 인스턴스
5)콜백함수 호출 -일반함수로 호출하면, 전역객체

-내부함수,콜백함수에서 전역객체에 바인딩되는것을 막기위해
다른변수 that을 사용해서 (외부에서), bind를 사용하거나

6)Function.prototype.apply/call/bind에 의한
간접호출 - 인수에 의해 결정

apply와 call은 함수호출 기능(단, 인수를 전달하는 방식이 다르다)
apply(배열) call(리스트)

this로 null 혹은 undefined같은 값을 넘기는 경우 this는 전역객체를 참조한다.

bind는 '영구적'

bind

function f() {
  return this.a;
}

var g = f.bind({a: 'azerty'});
console.log(g()); // azerty

var h = g.bind({a: 'yoo'}); // bind는 한 번만 사용 가능!
console.log(h()); // azerty


7) strict mode가 적용된 일반 함수 내부
this에는 undefined

반응형

'공부 > TIL-D' 카테고리의 다른 글

rest parameter  (0) 2019.05.16
자바스크립트 문  (0) 2019.05.15
메소드 사용해보기  (0) 2019.05.13
러버덕  (0) 2019.05.12
0511  (0) 2019.05.11