다른 프로그래밍 언어와 마찬가지로 자바스크립트에서도 this를 잘사용하면 코딩이 쉬워진다. 하지만 this가 동작하는 방식이 다양하여 초기에 개념을 잘못잡으면, 스크립트가 오작동할 수 있다. this를 사용하는 함수가 어떤 방식으로 호출되느냐에 따라 this에 다른 객체가 바인딩된다.
이는 어떤 객체나 멤버 메서드로서 호출되는 경우 객체가 this에 바인딩 된다.
아래 코드가 콘솔에 무엇을 출력할지 생각해보자.
var obj = {
name: 'ccw',
getName: function(){ console.log(this.name); }
}
obj.getName();
어떤 실행 문맥에 선언된 함수가 바로 호출될 경우 this에 전역 객체(window, global)가 바인딩된다.
var name = 'ccw';
function getName(){
console.log(this.name);
}
getName();
함수가 생성자로서 호출되면 생성될 객체 자기자신이 this에 바인딩된다.
function Student(){
this.name = 'ccw';
}
var s = new Student();
console.log(s.name);