• js自定义事件(一)


      在JS中事件是JS与浏览器交互的主要途径。事件是一种叫做观察者的设计模式,这是一种创建松散耦合代码的技术。对象可以发布事件,用来表示在该对象生命周期中某个有趣的时刻到了。然后其他对象可以观察该对象,等待这些有趣的时刻到来并通过运行代码来响应。

      观察者模式有两类对象组成:主题和观察者。主体负责发布事件,同时观察者通过订阅这些事件来观察该主体。该模式的一个关键概念是主体并不知道观察者的任何事情,也就是说它可以独自存在并正常运作即使观察者不存在。从另一方面说,观察者知道主体并能注册事件的回调函数(事件处理程序)。涉及DOM上时,DOM元素便是主体,你的事件处理代码便是观察者。

      事件是与DOM交互的最常见的方式,但它们也可以用于非DOM代码中----通过实现自定义事件。自定义事件背后的概念是创建一个管理事件的对象,让其他对象监听那些事件。说简单点就是我们希望在程序运行的时候,路线可能会有很多,如果程序运行到了一个特殊的地方,我们希望立刻运行用户注册的方法里面的代码,运行完毕后再继续运行,这个过程叫做监听。

      例如,创建一个文件MyEvent.js文件,里面创建一个类:

    function MyEvent(){
        this.handler;
    }
    MyEvent.prototype={
        addHandler:function(handler)
        {
            this.handler=handler;
        },
        fire:function()
        {
            this.handler();
        },
        removeHandler:function()
        {
            this.handler=null;
        }
    }

      上面使用js原型的思想创建的一个类,如果读者不太了解可以查看相关资料。MyEvent类型有一个单独的属性handler,用于存储事件处理程序(也就是用户注册的方法)。还有三个方法:addHandler(),用于注册事件处理程序;fire(),用于触发一个事件;以及removeHandler(),用于注销事件的处理程序。

      然后我们可以这样使用,新建一个html文件,放于和MyEvent.js同一个目录,方便引用。代码如下:

    <html>
    <head>
        <title></title>
        <script type="text/javascript" src="MyEvent.js"></script>
        <script type="text/javascript">
            function init()
            {
                //初始化一个事件对象
                var myEvent=new MyEvent();
                //注册方法
                myEvent.addHandler(myMethod);
                //运行到此处时触发事件
                myEvent.fire();
                //移除事件注册的方法
                myEvent.removeHandler();
                //再次触发事件,发现无效
                myEvent.fire();
            }
            function myMethod()
            {
                alert("成功");
            }
        </script>
    </head>
    <body>
    <input type="button" onclick="init()" value="测试" />
    </body>
    </html>

      上述的注释已经很详细的说明了其中的一种使用方式。这就是一个最简单的自定义事件,不过还有很多缺陷,如何优化将在(二)里面进行讲解。

  • 相关阅读:
    u-boot启动流程分析(1)_平台相关部分
    Linux文件系统简介
    PHP将部分内容替换成星号
    自制jQuery焦点图切换简易插件
    一次解决页面特效问题的排查记录
    自制jQuery标签插件
    一套后台管理html模版
    自制jquery可编辑的下拉框
    注册页面的一些记录
    CSS选择器的一些记录
  • 原文地址:https://www.cnblogs.com/zhuimengdeyuanyuan/p/2867632.html
Copyright © 2020-2023  润新知