JS类中event的简单实现(续)<!-- 
JS类中event的简单实现(续)    description:JS类中event的简单实现2
JS类中event的简单实现(续)    code by Lonsan on 2005
JS类中event的简单实现(续)    email:Lonsan21@163.com
JS类中event的简单实现(续)
JS类中event的简单实现(续)    请各位多批评指导,谢谢
JS类中event的简单实现(续)
-->
JS类中event的简单实现(续)
<html>
JS类中event的简单实现(续)
<head>
JS类中event的简单实现(续)
<title> JS Event2 </title>
JS类中event的简单实现(续)
<style>
JS类中event的简单实现(续)
</style>
JS类中event的简单实现(续)
</head>
JS类中event的简单实现(续)
JS类中event的简单实现(续)
<body>
JS类中event的简单实现(续)
</body>
JS类中event的简单实现(续)
</html>
JS类中event的简单实现(续)

JS类中event的简单实现(续)
<!--
JS类中event的简单实现(续)
//实现,实现类似C#风格调用
JS类中event的简单实现(续)//
已经支持+=和-=操作符,但是还存在很多问题,正寻求解决方法 
JS类中event的简单实现(续)//
注:参考了birdshome提示,在此表示感谢。
JS类中event的简单实现(续)

JS类中event的简单实现(续)
function RaiseEvent(sender,event)
{
JS类中event的简单实现(续)    
var funs="";
JS类中event的简单实现(续)    
for(var k in EventHandler.Events)
{
JS类中event的简单实现(续)        
if(k=="length")
JS类中event的简单实现(续)            
continue;
JS类中event的简单实现(续)        
JS类中event的简单实现(续)        
if((event&EventHandler.Events[k].ID)>0)
{
JS类中event的简单实现(续)            funs 
+= k+"(sender);\n";
JS类中event的简单实现(续)        }

JS类中event的简单实现(续)    }

JS类中event的简单实现(续)    eval(
"var f = function(sender){\n"+funs+"\n}");
JS类中event的简单实现(续)    f(sender);
JS类中event的简单实现(续)}

JS类中event的简单实现(续)
function EventHandler(o)
{
JS类中event的简单实现(续)    
this.EventID;
JS类中event的简单实现(续)
JS类中event的简单实现(续)    
var fname;
JS类中event的简单实现(续)    
if(typeof o=="function")
{
JS类中event的简单实现(续)        fname 
= o.toString().match(/function([^\0\(]*)\(/)[1];
JS类中event的简单实现(续)        
if(EventHandler.Events[fname]==null)
{
JS类中event的简单实现(续)            
this.EventID = (1<<EventHandler.Events.length);
;
JS类中event的简单实现(续)            EventHandler.Events.length
++;
JS类中event的简单实现(续)        }

JS类中event的简单实现(续)        
else
{
JS类中event的简单实现(续)            
this.EventID = EventHandler.Events[fname].ID;
JS类中event的简单实现(续)        }

JS类中event的简单实现(续)    }

JS类中event的简单实现(续)
JS类中event的简单实现(续)}

;
JS类中event的简单实现(续)EventHandler.Null
=0;
JS类中event的简单实现(续)EventHandler.prototype.toString 
= function()
{
JS类中event的简单实现(续)    
return this.EventID;
JS类中event的简单实现(续)}

JS类中event的简单实现(续)
JS类中event的简单实现(续)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
JS类中event的简单实现(续)

JS类中event的简单实现(续)
//示例

JS类中event的简单实现(续)Persion.prototype.onBeginSpeak
=EventHandler.Null;
JS类中event的简单实现(续)Persion.prototype.name
="Lonsan";
JS类中event的简单实现(续)Persion.prototype.Speak 
= function(sWords)
{
JS类中event的简单实现(续)    RaiseEvent(
thisthis.onBeginSpeak);
JS类中event的简单实现(续)
JS类中event的简单实现(续)    alert(
"正在讲话。。。\n以下是讲话内容:\n"+sWords);
JS类中event的简单实现(续)}

JS类中event的简单实现(续)
JS类中event的简单实现(续)
var p = new Persion()
JS类中event的简单实现(续)
JS类中event的简单实现(续)
//test1
JS类中event的简单实现(续)
p.onBeginSpeak += new EventHandler(BeginSpeak1);
JS类中event的简单实现(续)p.onBeginSpeak 
+= new EventHandler(BeginSpeak2);
JS类中event的简单实现(续)
JS类中event的简单实现(续)alert(
"测试1开始!!");
JS类中event的简单实现(续)p.Speak(
"大家好,我是"+p.name+"");
JS类中event的简单实现(续)
JS类中event的简单实现(续)
JS类中event的简单实现(续)
//test2
JS类中event的简单实现(续)
p.onBeginSpeak -= new EventHandler(BeginSpeak2);
JS类中event的简单实现(续)p.onBeginSpeak 
+= new EventHandler(BeginSpeak3);
JS类中event的简单实现(续)
JS类中event的简单实现(续)alert(
"测试2开始!!");
JS类中event的简单实现(续)p.Speak(
"第二次\n已经取消BeginSpeak2事件。\n我是"+p.name+"");
JS类中event的简单实现(续)
JS类中event的简单实现(续)
function BeginSpeak1(sender)
{
JS类中event的简单实现(续)    alert(
"处理BeginSpeak事件!--1\n");
JS类中event的简单实现(续)}

JS类中event的简单实现(续)
function BeginSpeak2(sender)
{
JS类中event的简单实现(续)    alert(
"处理BeginSpeak事件!--2");
JS类中event的简单实现(续)}

JS类中event的简单实现(续)
function BeginSpeak3(sender)
{
JS类中event的简单实现(续)    sender.name
="(Lonsan)蓝山";
JS类中event的简单实现(续)    alert(
"处理BeginSpeak事件!--3");
JS类中event的简单实现(续)}

JS类中event的简单实现(续)
JS类中event的简单实现(续)
//-->
JS类中event的简单实现(续)
</script>

相关文章: