您的位置:首页 > Web前端 > JavaScript

vbscript以及javascript的事件委托方案(转)

2008-07-14 10:45 357 查看
javascript版的:

function delegate()
{
this.event=new Array();
}

delegate.prototype.add=function(fun,obj)
{
this.event[this.event.length]=function(){
fun.apply(obj);
};
}

delegate.prototype.exec=function()
{
for(var i=0;i<this.event.length;i++)
{
this.event[i]();
}
}

delegate.prototype.del =function (num)
{
if (num < this.event.length)
{
this.event.splice(num, 1);
}
}

vbscript版的:

class delegate
dim arr()
dim arrTrue
Private Sub Class_Initialize
arrTrue=false
End Sub

function add(funname,obj)
if arrTrue=true then
redim Preserve arr(ubound(arr)+1,1)
else
arrTrue=true
redim Preserve arr(0,1)
end if
set arr(ubound(arr),0)=obj
arr(ubound(arr),1)=funname
End function

Sub exec
for i=0 to ubound(arr)
execute "arr(" & i & ",0)." & arr(i,1)
next
End Sub
end class

javascript版的可能比较好理解,而vbs需要用到反射机制才能模拟出委托来

execute "arr(" & i & ",0)." & arr(i,1)关键是这一句,才能很好的完成js中的闭包
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: