call
메서드는 모든 함수에서 사용할 수 있으며, this
를 특정값으로 지정할 수 있습니다.
apply
는 함수 매개변수를 처리하는 방법을 제외하면 call
과 완전히 같습니다. call
은 일반적인 함수와 마찬가지로 매개변수를 직접 받지만, apply
는 매개변수를 배열로 받습니다.
bind
함수의 this 값을 영구히 바꿀 수 있습니다.
함수가 만들어졌을 때, 뒤에서는 this
라 불리는 키워드가 만들어집니다. this
는 함수가 동작하는 곳에 있는 오브젝트와 연결해줍니다.
this
키워드의 값은 그 함수 자체와는 상관이 없습니다. 함수가 어떻게 불려지는지가 this
의 값을 결정합니다.
// define a function
var myFunction = function () {
console.log(this);
};
// call it
myFunction();
this
의 값은 어떤 것이 될지 예측할 수 있을까요? 기본 값으로, this
는 언제나 전역 스코프의 root을 참조하는 window Object가 됩니다. 만일, 스크립트가 strict mode("use strict"
) 내에서 작동하고 있다면, this
는 undefined일 것입니다.
var myObject = {
myMethod: function () {
console.log(this);
}
};
여기서 this
의 값으론 무엇이 들어올까요?
정답은 우린 모른다 입니다.
기억해두세요. this 키워드의 값은 언제나 함수 그 자체와는 상관 없습니다. 함수가 어떻게 호출되는지가 this
의 값을 결정합니다.