객체의 메소드를 콜백 함수로 전달하면 해당 객체를 this로 바라볼 수 없다.

객체를 바라보게 하고 싶은 경우에는

  1. 별도의 인자로 this를 받는 함수의 경우 넘겨주고
  2. 그게 안되면 this를 다른 변수에 담아 콜백 함수로 활용할 함수에서 this 대신 그 변수를 사용하게 하고 클로저로 만드는 방식으로 많이 쓰인다.

but 문제점이 많고 복잡한 전통적인 방식(변수에 this를 담고 클로저를 이용) 대신 ES5이후부터는 bind를 이용하면 된다.

var obj1 = {
		name: 'obj1',
		func: function() {
				console.log(this.name);
		}
};
setTimeout(obj1.func.bind(obj1), 1000);

var obj2 = { name: 'obj2'};
setTimeout(obj1.func.bind(obj2),1500);