this를 원하는 객체로 고정해야할 경우가 있기때문에 자바스크립트는 여러가지의 방법을 지원한다.
func.bind(thisArg[, arg1[, arg2[, ...]]])
모든 함수는 bind메소드를 상속받으며 this를 thisArg인자로 바인딩한 새로운 함수를 반환한다.
setTimeout(user.getName.bind(user), 1000);
바인딩된 콜백을 전달하면 이벤트루프는 user.getName함수의 호출주체는 이벤트루프이지만 this는 고정된상태이기 때문에 원하는 결과를 얻을 수 있다.
let user = {
firstName: "John"
};
function fn(phrase){
console.log(`${phrase} ${this.firstName}`);
}
let bindFunc = fn.bind(user);
bindFunc('hello');
let bindFunc1 = fn.bind(user,'bye');
bindFunc();
bind메소드는 함수내 this를 전달한 첫번째인자객체로 바인딩시킬뿐아니라 그외의 일반 매개변수도 바인딩하는 기능도 제공한다.