일단 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
this는 다음상황에서 어떻게 바인딩 되는지
반응형