May 21, 2023
요약:
JavaScript에서 함수는 호출될 때, 매개변수로 전달되는 인자값 이외에, arguments 객체와 this를 암묵적으로 전달 받는다. this는 함수 호출 방식에 따라 바인딩되는 객체가 달라진다.
var _this = this
function callback() {
console.log(_this.value)
}
또한, JavaScript는 apply, call, bind 메소드를 사용하여 명시적으로 this를 바인딩하는 방법을 제공한다.
빈 객체 생성 및 this 바인딩:
생성자 함수의 코드 실행 전에 빈 객체가 생성되고, 이후 생성자 함수 내에서 사용되는 this는 이 빈 객체를 가리킨다. 생성된 빈 객체는 생성자 함수의 prototype 프로퍼티가 가리키는 객체를 자신의 프로토타입 객체로 설정한다. this를 통한 프로퍼티 생성:
빈 객체에 this를 사용하여 동적으로 프로퍼티와 메소드를 생성할 수 있다. 이때 this는 생성 중인 빈 객체를 가리킨다. 생성된 객체 반환:
반환문이 없는 경우, this에 바인딩된 새로 생성된 객체가 반환된다 (빈 객체). 반환문으로 this가 아닌 다른 객체를 명시적으로 반환할 수도 있다. 일반적으로 생성자 함수는 반환문을 명시적으로 사용하지 않는다. 참고: 객체 리터럴과 생성자 함수의 차이는 프로토타입 객체에 있다. 객체 리터럴의 프로토타입 객체는 Object.prototype이고, 생성자 함수의 프로토타입 객체는 생성자 함수의 prototype이다.
다음 포스팅에서는 apply, call, bind 호출에 대해 자세히 알아보겠다.