콜백함수로 넘길 함수가
어떤 객체의 프로퍼티이고, 함수 내부에서 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를 알아내는 방법이 있다.
'WEB > javascript' 카테고리의 다른 글
HTML 에서 HTML로 데이터 전송 (0) | 2012.08.13 |
---|---|
javascript JSON 사용하기 (0) | 2012.08.10 |
자바스크립트 함수 hoisting (0) | 2012.07.27 |
자바스크립트 함수 객체의 name 프로퍼티 (0) | 2012.07.27 |
생성자 함수 안전 사용 (0) | 2012.07.22 |