给对象增加一个简单的自定义事件机制

  1. <html>

  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  4. <title>给对象增加一个简单的自定义事件机制</title>
  5. </head>

  6. <body>
  7. <script type="text/javascript">
  8. function MyObject()
  9. {
  10.         // 保存事件监听函数数组
  11.         this.RunEventListeners = new Array();
  12. }

  13. MyObject.prototype.Run = function()
  14. {
  15.         // 在这里实现Run方法的代码并且触发
  16.         // 下边是激活onrun事件
  17.         for(var i = 0; i < this.RunEventListeners.length; i++)
  18.                 this.RunEventListeners[i](this);
  19. }

  20. MyObject.prototype.AddEvent = function(name, listener)
  21. {
  22.         switch(name.toLowerCase())
  23.         {
  24.                 case "onrun":
  25.                         this.RunEventListeners[this.RunEventListeners.length] = listener;
  26.                         break;
  27.                 // 还可以在这里增加各种事件,最好判断一下该listener是事已经被添加,以免重复执行,不过这里省了
  28.                 default:
  29.                         break;
  30.         }
  31. }

  32. function OnRun1(sender)
  33. {
  34.         alert("已经执行了OnRun1事件")
  35. }

  36. function OnRun2(sender)
  37. {
  38.         alert("已经执行了OnRun2事件");
  39. }

  40. var myobj = new MyObject();

  41. // 添加两个监听函数
  42. myobj.AddEvent("onrun", OnRun1);
  43. myobj.AddEvent("onrun", OnRun2);


  44. // 执行Run方法,如无例外,会触发onrun事件
  45. myobj.Run();
  46. </script>
  47. </body>

  48. </html>
posted @ 2012-03-28 20:00  ChaunceyHao  阅读(185)  评论(0)    收藏  举报