在JavaScript中使用timer很容易,
function foo()
{
}
setInterval( "foo()", 1000 );
如果使用OO的技术,可以这样,
// constructor
function MyObj
{
function foo()
{
alert( this.data );
}
this.timer = foo;
this.data = "Hello";
setInterval( "this.timer()", 1000 );
}
function Another()
{
// create timer when create object
var obj = new MyObj();
}
但是,它并不能像你想像的那样工作。原因在于setInterval()这个函数并不能识别this这个变量。一个workaround 的方法可以这样。
function Another()
{
var obj = nw MyObj();
setInterval( “obj.timer()”, 1000 );
}
显然,它可以正确工作,但如果你是一个完美主义者,你就不会对它满意。幸运的是,可以将这个动作放到构造函数中去,形式上有点变化。
// constructor
function MyObj
{
function foo()
{
alert( this.data );
}
this.timer = foo;
this.data = "Hello";
var self = this;
setInterval( function() { self.timer(); }, 1000 );
}
function Another()
{
var obj = new MyObj();
}
OK, 通过使用一个闭包,就可以了。至于其中的原因,我想给读者自己去思考。
最后,给一个各种测试case的例子。
<html>
<head>
<title>
Hello Timer
</title>
<script language = "JScript">
/*
* There are 3 classes.
*
* 1. timer can run and result is ok
* 2. timer can run and result is wrong
* 3. timer can not run
*
*/
function Obj()
{
function foo()
{
alert( this.timer );
}
this.timer = foo;
//
var me = this;
var f = function() { me.timer(); };
var f2 = function() { this.timer(); };
// 1st class
//setInterval( f, 1000 );
// 3rd class
//setInterval( f2, 1000 );
// 2nd class
//setInterval( me.timer, 1000 );
//setInterval( this.timer, 1000 );
//setInterval( foo, 1000 );
// 3rd class
//setInterval( "this.timer()", 1000 );
//setInterval( "me.timer()", 1000 );
//setInterval( "foo()", 1000 );
}
var o = null;
function OnClick()
{
o = new Obj();
// 1st class
//setInterval( "o.timer()", 1000 );
setInterval( function() { o.timer(); }, 1000 );
// 2nd class
//setInterval( o.timer, 1000 );
}
</script>
</head>
<body>
<input type = "button" onclick = "OnClick()" value = "Click me"></input>
</body>
</html>
分享到:
相关推荐
C语言02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序(STC32G-DEMO-CODE-220311kw)C语言02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序(STC32G-DEMO-CODE-220311kw)C语言02-Timer0-Timer1-Timer2-Timer3-Timer4...
在JavaScript中用法timer示例_.docx
最新单片机仿真 TIMER0与TIMER1控制条形LED最新单片机仿真 TIMER0与TIMER1控制条形LED最新单片机仿真 TIMER0与TIMER1控制条形LED最新单片机仿真 TIMER0与TIMER1控制条形LED最新单片机仿真 TIMER0与TIMER1控制条形LED...
JavaScript-Timer-challenge
单片机C语言程序设计 TIMER0与TIMER1控制条形LED(有源码)单片机C语言程序设计 TIMER0与TIMER1控制条形LED(有源码)单片机C语言程序设计 TIMER0与TIMER1控制条形LED(有源码)单片机C语言程序设计 TIMER0与TIMER1控制...
计时器简单轻量级的 javascript 计时器开始在需要的地方包含 timer.min.js。 创建一个定时器实例:timer = new Timer ( < callback> , < instance> ); 调用 timer.start(duration) 函数。 每隔几秒,就会调用 ...
本文实例讲述了C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析,分享给大家供大家参考。具体分析如下: 在.NET Framework里面提供了三种Timer ① System.Windows.Forms.Timer ② System.Timers.Timer ③...
加Timer控件 timer1 编写其Tick事件为 private void timer1_Tick(object sender, EventArgs e) { this.toolStripStatusLabel3.Text = "系统当前时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); } ...
基于Verilog的timer计时器,start开始,到达设置计时点时输出一个高电平up信号
单片机C语言程序设计31 TIMER0与TIMER1控制条形LED(基于8051+Proteus仿真)单片机C语言程序设计31 TIMER0与TIMER1控制条形LED(基于8051+Proteus仿真)单片机C语言程序设计31 TIMER0与TIMER1控制条形LED(基于8051+...
JavaScript
ajax_timer ajax_timer ajax_timer ajax_timer
JavaScript
学习32位单片机的基础例程,主要针对初学者对TIMER的编程学习
addintimer高级版是一个万能定时器,非常好用,强烈推荐,可以当时间定时器来用,还有整点报时,定时录音等功能
如果使用OO的技术,可以这样, 代码如下: // constructor function MyObj { function foo() { alert( this.data ); } this.timer = foo; this.data = “Hello”; setInterval( “this.timer()”, 1000 ); }...
对POSIX timer的面向对象的封装。
Timer Input Capture using stm8
1.Timer Mechanism 2.Hardware Timer 3.Timer in OS 4.Timer in APP 5.Timer in Qemu
51单片机Proteus仿真实例 TIMER0控制流水灯51单片机Proteus仿真实例 TIMER0控制流水灯51单片机Proteus仿真实例 TIMER0控制流水灯51单片机Proteus仿真实例 TIMER0控制流水灯51单片机Proteus仿真实例 TIMER0控制流水灯...