콜백함수로 넘길 함수가

어떤 객체의 프로퍼티이고, 함수 내부에서 this를 사용했다면,

콜백을 전달받은 함수에서 이 콜백함수를 호출하게되면 this의 값이 달라진다.


다음 예를 보면,

var myobj = {}
var myobj.color = "green"
var myobj.paint = function(node) {
	node.style.color = this.color
};


myobj.paint 함수를 다른 함수의 콜백인자로 넘겨보자.

var setColor = function(callback) {
	...
	if ( typeof callback === "function" ) {
		callback(node);
	}
	...
};

setColor(myobj.paint);


myobj.paint 함수 정의의 this는 setColor의 함수객체를 가리킨다. 즉 전역에 color 이라는 필드가 선언되어 있다면 그 값이 나오겠지만 선언되지 않았다면 ReferenceError exception이 발생한다.



이 상황을 해결하기 위해 myboj 객체도 인자로 같이 넘겨받아 this를 알아내는 방법이 있다.

+ Recent posts