본문 바로가기

개발에 도움이 되는/JavaScript

this

- this

자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수이며 this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메소드를 참조할 수 있다. 즉, 실행한 주체를 가리키며, 호출되는 방식에 따라 동적으로 결정된다.

 

 

- this의 여러 case

this는 전역 객체로 window를 기본적으로 참조하고 있다. 

일반 함수 호출의 경우 this는 window를 참조한다. (호출 주체가 window기 때문에)

화살표 함수 호출의 경우 상위 객체를 참조한다.

var obj = {
  name: 'B',
  print: function () {
    var inner1 = function () {console.log(this.name, name)};
    inner1();

    var inner2 = () => console.log(this.name, name);
    inner2();

    var name = 'C';
    console.log(window.name, this.name, name);
  }
}

name = 'A';
obj.print();


출력 결과
A Undefined
B Undefined
A B C

 

생성자 함수로 호출 시 생성자 함수가 생성할 객체에 바인딩된다. 

function C() {
  this.a = 37;
}

var o = new C();
console.log(o.a); // 37


function C2() {
  this.a = 37;
  return {a: 38};
}

o = new C2();
console.log(o.a); // 38

 

bind 메서드를 통해 this를 binding 할 수 있다.

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

var o = {a: 37, f: f, g: g, h: h};
console.log(o.a, o.f(), o.g(), o.h()); // 37, 37, azerty, azerty

 

 

참고 사이트 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/this

반응형

'개발에 도움이 되는 > JavaScript' 카테고리의 다른 글

원시 자료형, 참조 자료형  (0) 2022.04.05
클로저(Closure)  (0) 2022.03.13
스코프(Scope)  (0) 2022.02.27
실행 컨텍스트(Execution Context)  (0) 2022.01.15
호이스팅(Hoisting)  (1) 2022.01.05