(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 |