#
목차
1. 개요 1.1. 전역 컨텍스트 또는 함수 컨텍스트에서의 this 1.2. 메서드로서 호출될 때의 this 1.3. 생성자 함수에서의 this 1.4. 명시적으로 컨텍스트 설정하기 1.5. 화살표 함수와 'this'
#
this
#
1. 개요
JavaScript에서 this 키워드는 실행 컨텍스트에 따라 다르게 바인딩됩니다. 즉, this가 가리키는 값은 그것이 호출된 상황에 따라 달라집니다.
#
1.1. 전역 컨텍스트 또는 함수 컨텍스트에서의 this
전역 스코프나 일반 함수 내부에서 this를 사용하면, 이는 전역 객체를 참조합니다. 웹 브라우저 환경에서 전역 객체는 window입니다.
console.log(this); // window
function test() {
console.log(this); // window
}
test();
#
1.2. 메서드로서 호출될 때의 this
객체의 메서드 내부에서 this를 사용하면, 이는 해당 메서드를 호출한 객체를 참조합니다.
const obj = {
prop: 42,
func: function () {
return this.prop;
},
};
console.log(obj.func()); // 42 (여기서 this는 obj를 가리킵니다.)
#
1.3. 생성자 함수에서의 this
생성자 함수 내부에서 this를 사용하면, 이는 새로 생성되어 반환되는 객체(instance)를 참조합니다.
function Person(name) {
this.name = name;
}
const person = new Person('John');
console.log(person.name); // John (여기서 this는 새로 생성된 person 객체를 가리킵니다.)
#
1.4. 명시적으로 컨텍스트 설정하기
JavaScript에 내장된 call(), apply(), bind() 메소드들을 사용하여 명시적으로 함수나 메소드의 실행 컨텍스트(즉, 'this'가 가리키게 될 값)을 설정할 수 있습니다.
#
1.5. 화살표 함수와 'this'
화살표 함수(arrow function)은 자신만의 'this' 바인딩을 생성하지 않습니다. 대신 화살표 함수의 'this'값은 상위 범위(scope)의 'this'값을 상속받습니다.