코드 사본은 다음과 같습니다.
함수 foo ()
{
}
setInterval ( "foo ()", 1000);
OO 기술을 사용하는 경우이를 수행 할 수 있습니다.
코드 사본은 다음과 같습니다.
// 생성자
myobj 기능
{
함수 foo ()
{
경고 (this.data);
}
this.timer = foo;
this.data = "안녕하세요";
setInterval ( "this.timer ()", 1000);
}
다른 기능 ()
{
// 객체를 만들 때 타이머를 만듭니다
var obj = new myobj ();
}
그러나 생각대로 작동하지 않습니다. 그 이유는 setInterVal () 함수 가이 변수를 인식하지 않기 때문입니다. 해결 방법이이를 수행 할 수 있습니다.
코드 사본은 다음과 같습니다.
다른 기능 ()
{
var obj = nw myobj ();
setInterval ( "obj.timer ()", 1000);
}
분명히, 그것은 올바르게 작동하지만, 당신이 완벽 주의자라면, 당신은 그것에 만족하지 않을 것입니다. 다행히도이 동작은 약간의 형태의 변화로 생성자에 넣을 수 있습니다.
코드 사본은 다음과 같습니다.
// 생성자
myobj 기능
{
함수 foo ()
{
경고 (this.data);
}
this.timer = foo;
this.data = "안녕하세요";
var self = 이것;
setInterVal (function () {self.timer ();}, 1000);
}
다른 기능 ()
{
var obj = new myobj ();
}
좋아, 폐쇄를 사용하면 괜찮습니다. 이유에 관해서는 독자들에게 스스로 생각을주고 싶습니다.
마지막으로 다양한 테스트 사례의 예를 들어보십시오.
코드 사본은 다음과 같습니다.
<html>
<헤드>
<title>
안녕하세요 타이머
</제목>
<script language = "jscript">
/*
* 3 개의 수업이 있습니다.
*
* 1. 타이머가 실행될 수 있고 결과는 정상입니다
* 2. 타이머가 실행될 수 있고 결과가 잘못되었습니다
* 3. 타이머가 실행할 수 없습니다
*
*/
기능 OBJ ()
{
함수 foo ()
{
경고 (this.Timer);
}
this.timer = foo;
//
var me = 이것;
var f = function () {me.timer (); };
var f2 = function () {this.timer (); };
// 첫 번째 클래스
// setInterVal (f, 1000);
// 세 번째 클래스
// setInterVal (f2, 1000);
// 2 등석
// setInterVal (Me.Timer, 1000);
// setInterVal (this.Timer, 1000);
// setInterVal (foo, 1000);
// 세 번째 클래스
// setInterVal ( "this.timer ()", 1000);
// setInterVal ( "me.timer ()", 1000);
// setInterVal ( "foo ()", 1000);
}
var o = null;
onclick () 함수
{
o = 새로운 obj ();
// 첫 번째 클래스
// setInterVal ( "O.Timer ()", 1000);
setInterVal (function () {O.Timer ();}, 1000);
// 2 등석
// setInterVal (O.Timer, 1000);
}
</스크립트>
</head>
<body>
<input type = "button"onclick = "onclick ()"value = "Click Me"> </input>
</body>
</html>