✨ this를 명시적으로 바인딩
= 함수가 실행될 때 this가 참조하는 객체를 명확하게 지정하는 것
- this 값을 제어하거나 함수의 실행 방식을 조정
- 함수의 실행 컨텍스트를 유연하게 변경하고 제어
📌 call()
: 함수에 인자를 개별적으로 풀어서 전달
함수.call(thisArg, arg1, arg2, ...);
- 함수를 호출할 때 this 값을 설정하고, 그 이후에 이어지는 인수들을 개별적으로 전달
- 함수 즉시 호출
- 주로 상속이나 메서드 호출 시 유용
function greet(greeting, punctuation) {
console.log(greeting + ", " + this.name + punctuation);
}
const person = { name: "Alice" };
greet.call(person, "Hello", "!");
// Output: "Hello, Alice!"
📌 apply()
: 함수에 인자를 배열로 전달
func.apply(thisArg, [argsArray]);
- 주어진 this 값과 배열로 제공되는 arguments로 함수를 호출
- 함수 즉시 호출
- 배열을 인자로 사용하는 함수에 유용
function greet(greeting, punctuation) {
console.log(greeting + ", " + this.name + punctuation);
}
const person = { name: "Alice" };
greet.apply(person, ["Hello", "!"]);
// Output: "Hello, Alice!"
📌 bind()
: 초기 인자들을 설정한 새로운 함수 반환
const boundFunc = func.bind(thisArg, arg1, arg2, ...);
- 함수 나중에 호출 가능 ⭕
- 나중에 호출할 수 있도록 새로운 함수(바인딩된 함수)를 생성 - 이벤트 핸들러나 콜백 함수에서 this 값을 고정할 때 유용
function greet(greeting, punctuation) {
console.log(greeting + ", " + this.name + punctuation);
}
const person = { name: "Alice" };
const boundGreet = greet.bind(person, "Hello");
boundGreet("!");
// Output: "Hello, Alice!"
Function.prototype.call() - JavaScript | MDN
call() 메소드는 주어진 this 값 및 각각 전달된 인수와 함께 함수를 호출합니다.
developer.mozilla.org
Function.prototype.apply() - JavaScript | MDN
apply() 메서드는 주어진 this 값과 배열 (또는 유사 배열 객체) 로 제공되는 arguments 로 함수를 호출합니다.
developer.mozilla.org
Function.prototype.bind() - JavaScript | MDN
bind() 메소드가 호출되면 새로운 함수를 생성합니다. 받게되는 첫 인자의 value로는 this 키워드를 설정하고, 이어지는 인자들은 바인드된 함수의 인수에 제공됩니다.
developer.mozilla.org