자신이 속한 객체를 가리키는 식별자를 참조해야 자신이 속한 객체의 프로퍼티 참조 가능
this는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수. this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드 참조 가능
this가 가리키는 값, 즉 this 바인딩은 함수 호출 방식에 의해 동적 결정
this(키워드로 분류되지만 식별자 역할)와 this가 가리킬 객체를 바인딩하는 것
함수 호출 방식은 다음과 같다.
this에는 전역 객체 바인딩 ( 중첩 함수, 콜백 함수 포함)
화살표 함수 사용으로 this 바인딩 일치시키는 방법도 있음 (화살표 함수는 상위 스코프에 바인딩)
소유한 객체가 아닌 메서드를 호출한 객체에 바인딩
const person = {
name: 'Lee',
getName() {
return this.name;
}
}
console.log(person.getName()); /// Lee
const anotherPerson = {
name: 'Kim'
};
anotherPerson.getName = person.getName;
console.log(anotherPerson.getName()); // Kim
const getName = person.getName;
console.log(getName()); // ''
객체를 생성하는 함수. 생성자 함수 내부의 this에는 생성자 함수가 (미래에) 생성할 인스턴스가 바인딩됨
Function.prototype.apply(thisArg[, argsArray])
Function.prototype.call(thisArg[, arg1[, arg2[, ...]]])
ex)
function getThisBinding() {
return this;
}
const thisArg = { a: 1 };
console.log(getThisBinding());
console.log(getThisBinding.apply(thisArg)); // {a : 1}
console.log(getThisBinding.call(thisArg)); // {a : 1}