Asp.Net ajax 面向对象类型系统2 - 使用事件
直接上代码了:
//注册命名空间 Type.registerNamespace("MyNamesapce"); MyNamesapce.Eat = function() { //定义EventHandlerList对象 // this._events = new Sys.EventHandlerList(); this._events = null; } MyNamesapce.Eat.prototype = { _get_events: function() { if (!this._events) { //返回EventHandlerList对象 this._events = new Sys.EventHandlerList(); } return this._events; }, //添加add和remove eat事件的方法 add_eatEvent: function(handler) { this._get_events().addHandler("eat", handler); }, remove_eatEvent: function(handler) { this._get_events().removeHandler("eat", handler); }, //定义eat事件 onEat: function(e) { var eatHandler = this._get_events().getHandler("eat"); if (eatHandler) { eatHandler(this, e); } }, //定义触发eat事件的方法 handleEat: function(isHungry) { if (isHungry) { this.onEat(Sys.EventArgs.Empty); } } } MyNamesapce.Eat.registerClass("MyNamesapce.Eat"); //----------------------------------------------------------- function test() { var eat = new MyNamesapce.Eat(); //添加eat事件注册 eat.add_eatEvent(EatEventMethod1); eat.add_eatEvent(EatEventMethod2); eat.add_eatEvent(EatEventMethod3); //触发eat事件 eat.handleEat(true); } //定义eat事件处理方法 function EatEventMethod1(sender, e) { alert("I begin to eat."); } function EatEventMethod2(sender, e) { alert("I am eating."); } function EatEventMethod3(sender, e) { alert("I've eaten."); }
其实这个和C#的EventHandlerList的事件处理方式差不多的,演示地址(查看源文件即是本例):
浙公网安备 33010602011771号