function foo()
{
}
setInterval( "foo()", 1000 );
OO 기술을 사용하면 이렇게 할 수 있습니다.
// constructor
function MyObj
{
function foo()
{
alert( this.data );
this.timer = foo;
this.data = "안녕하세요"
setInterval( "this.timer()" , 1000 );
}
function Another()
{
// 객체 생성 시 타이머 생성
var obj = new MyObj();
그런데 생각대로 되지 않네요. 그 이유는 setInterval() 함수가 변수 this를 인식하지 못하기 때문입니다. 해결 방법은 다음과 같을 수 있습니다.
{
var obj = nw MyObj();
setInterval( "obj.timer()", 1000 );
}
분명히 제대로 작동할 수 있지만 완벽주의자 그렇지 않으면 만족하지 못할 것입니다. 다행히도 양식을 약간 변경하여 이 작업을 생성자에 넣을 수 있습니다.
function MyObj
{
function foo()
{
alert( this.data )
}
this.timer =
this.data = "안녕하세요" ;
var self = this;
setInterval( function() { self.timer(); }, 1000 )
function Another()
{
var obj = new MyObj();
}
자, 클로저를 사용하면 끝입니다. 그 이유에 대해서는 독자들의 생각에 맡기고 싶다.
마지막으로 다양한 테스트 케이스의 예를 들어보겠습니다.
코드 복사
Hello Timer
<입력 유형 = "버튼" OnClick() " value = "나를 클릭하세요">