본문 바로가기
JavaScript

[JavaScript] this

by eddypark 2023. 10. 17.

(1) this란

- 함수를 호출하는 객체에 대한 참조를 의미한다.

- 어떻게 호출되는지에 따라 바인딩되는 것이 동적으로 결정된다.

(2) 호출 방법

- 전역에서의 this

- 전역에서의 this는 기본적으로 window 객체이다.

console.log(this); // window

- 일반 함수의 this

- 일반 함수에서의 this는 window이다. 단 strict mode에서는 undefined이다.

function a() {
  console.log(this);
}

a();                    // window

function b() {
  'use strict'
  console.log(this);
}

b();                    // undefined

- 메서드의 this

var a = 'wangi';
var b = {
  a: 'eddy',
  c: x
}

function x() {	
  console.log(this.a);    
}

b.c(); // eddy

x();   // wangi

- call, apply, bind를 이용한 호출

- this는 call, apply, bind안에 오는 객체에 바인딩된다.

function x() {
    console.log(this);
};
var test = { name : 'wangi' };
x.apply(test);                           // { name : 'wangi' }
x.call(test);                            // { name : 'wangi' }
x.bind(test)();                          // { name : 'wangi' }
 
function y(name) {
    this.name = name;
    console.log(this);
}; 
var information = {};
y.apply(information , ['wangi']);        // { name: 'wangi' }
y.call(information , 'eddy');            // { name: 'eddy' }
y.bind(information , 'wangi')();         // { name : 'wangi' }
y.call(information , ['wangi','eddy']);  // { name: [ 'wangi', 'eddy' ] }

'JavaScript' 카테고리의 다른 글

[JavaScript]클로저(closure)  (0) 2023.10.18
[JavaScript] 실행 컨텍스트(Execute Context)  (0) 2023.10.17
[JavaScript] Strict mode  (0) 2023.10.16
[JavaScript] 스코프(Scope)  (0) 2023.10.16
[JavaScript] 프로토타입  (0) 2023.10.13