实现了属性和方法,剩下的就是event的实现了,我查找了许多资料,包括整个msdn关于jscript的参考,都没有看到一个很好的模型关于事件实现的,后来参考了一些站点编写hta(html component,有空我会写一些相关的文章)的实现,借助于比较扭曲(我个人认为)的方法可以大致的实现基于事件驱动的功能。大致的思路是这样子的:
1).将所有的事件定义成属性,只要简单的声明就可以
2).在需要触发事件的代码中判断事件属性是否是一个函数,如果是函数,直接执行函数代码,如果是字符串,那么执行字符串函数,通过eval(str)来执行。
3) .在类的实例当中注册事件函数。
为了简单说明如上的思路,采用timer这样简单的例子来表述如上的所提到的内容,如果只是为了简单的实现timer的功能,javascript中setinterval函数就可以满足全部的要求,如下的代码只是用来说明timer的工作原理。
//class for timer
function timer(iinterval){
//if not set the timer interval ,then defalut set to 500ms
this.interval=iinterval || 500;
this._handleinterval;
this.timerevent=null
function start(){
if(this.interval!=0){
this._handleinterval=setinterval("timercallback()",this.interval);
}
}
function start(){
clearinterval(this._handleinterval);
}
function timercallback(){
if (typeof this.timerevent=="function"){
this.timerevent();
}