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

今天写一个类,在类中使用到了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 ;
}


你可能感兴趣的:(JavaScript)