Javascript中的 setTimeout函数在类中的应用

it2026-05-15  15

今天写一个类,在类中使用到了setTimeout函数。

1。 this.timerID = setTimeout("showtime()",1000);

提示:showtime is not defined

2。 this.timerID = setTimeout("this.showtime()",1000);

提示:this.showtime is not a function

3。 this.timerID = setTimeout("this.showtime",1000);

没有错误,但是不执行。

4. 正确的方法:

  var self = this;

  this.timerID = setTimeout(function(){self.showtime();},1000);

在方法1 - 3 中找不到showtime()函数。

方法1, showtime指的是一个单独的函数。

方法2, 3,this 指向的是window对象,而不是当前实例对象。

 

类如下:

 

代码 //  JScript File function  clock() {   this .timerID  =   null ;     this .timerRunning  =   false ;     this .startHour  =   0 ;     this .startMinute  =   0 ;     this .startSecond  =   0 ;     this .showObj  =   null ;         if ( typeof (clock._initialized)  ==   " undefined " )     {       clock.prototype.init  =   function (otimerID,timerRunning,startHour,startMinute,startSecond,showObj){         this .timerID  =  otimerID;         this .timerRunning  =  timerRunning;         this .startHour  =  startHour;         this .startMinute  =  startMinute;         this .startSecond  =  startSecond;         this .showObj  =  showObj;         };       clock.prototype.toggletimer  =   function (obj){           if  ( this .timerRunning)           {             obj.value  =   " Start Timer " ;             this .stopclock ();           }           else           {             obj.value  =   " Stop Timer " ;             this .startclock ();           }         };               //  stop the clock       clock.prototype.stopclock  =   function (){         if  ( this .timerRunning)           clearTimeout( this .timerID);           this .timerRunning  =   false ;        };       //  start the clock       clock.prototype.startclock  =   function (){         var  now  =   new  Date();         this .startHour  =  now.getHours();         this .startMinute  =  now.getMinutes();         this .startSecond  =  now.getSeconds();         //  Make sure the clock is stopped          this .stopclock();         this .showtime();       };       //  actually display the time       clock.prototype.showtime  =   function (){         var  i  =   0 ;         var  strSec  =   "" ;         var  now  =   new  Date();         var  hours  =  now.getHours();         var  minutes  =  now.getMinutes();         var  seconds  =  now.getSeconds();         var  timeValue  =   ""   +  ((hours  > 12 ?  hours  - 12  :hours);         timeValue  +=  ((minutes  <   10 ?   " :0 "  :  " : " +  minutes;         timeValue  +=  ((seconds  <   10 ?   " :0 "  :  " : " +  seconds;         timeValue  +=  (hours  >=   12 ?   "  P.M. "  :  "  A.M. " ;                 var  MinutesElapsing  =  Math.round(((hours  -   this .startHour) * 60   +  (minutes  -   this .startMinute)  +  (seconds - this .startSecond) / 60)*10) / 10 ;         this .showObj.value  =  MinutesElapsing;                 for  (i  =   0 ; i  <  seconds - this .startSecond; i ++ ) {           strSec  =  strSec  +   " = " ;         };         window.status  =  timeValue;         var  self  =   this ;         this .timerID  =  setTimeout( function (){self.showtime();}, 1000 );         this .timerRunning  =   true ;       };     }  clock._initialized  =   true ; }

转载于:https://www.cnblogs.com/lfzwenzhu/archive/2010/06/01/1749121.html

相关资源:实例详解JavaScript中setTimeout函数的执行顺序
最新回复(0)