zoukankan      html  css  js  c++  java
  • 监听自定义事件

    window.CusEventTarget = function () {
        this._listener = {};
    };
    
    CusEventTarget.prototype = {
        constructor: this,
        addEvent: function (type, fn) {
            if (typeof type === "string" && typeof fn === "function") {
                if (typeof this._listener[type] === "undefined") {
                    this._listener[type] = [fn];
                } else {
                    this._listener[type].push(fn);
                }
            }
            return this;
        },
        addEvents: function (obj) {
            obj = typeof obj === "object" ? obj : {};
            var type;
            for (type in obj) {
                if (type && typeof obj[type] === "function") {
                    this.addEvent(type, obj[type]);
                }
            }
            return this;
        },
        addMutipleEvents: function (types, fn) {
            types = types instanceof Array ? types : [];
            var type;
            for (var i in types) {
                type = types[i]
                this.addEvent(type, fn);
            }
            return this;
        },
        fireEvent: function (type,data) {
            if (type && this._listener[type]) {
                var events = {
                    type: type,
                    target: this
                };
    
                for (var length = this._listener[type].length, start = 0; start < length; start += 1) {
                    this._listener[type][start].call(this,data, events);
                }
            }
            return this;
        },
        fireEvents: function (array) {
            if (array instanceof Array) {
                for (var i = 0, length = array.length; i < length; i += 1) {
                    this.fireEvent(array[i]);
                }
            }
            return this;
        },
        removeEvent: function (type, key) {
            var listeners = this._listener[type];
            if (listeners instanceof Array) {
                if (typeof key === "function") {
                    for (var i = 0, length = listeners.length; i < length; i += 1) {
                        if (listeners[i] === listener) {
                            listeners.splice(i, 1);
                            break;
                        }
                    }
                } else if (key instanceof Array) {
                    for (var lis = 0, lenkey = key.length; lis < lenkey; lis += 1) {
                        this.removeEvent(type, key[lenkey]);
                    }
                } else {
                    delete this._listener[type];
                }
            }
            return this;
        },
        removeEvents: function (params) {
            if (params instanceof Array) {
                for (var i = 0, length = params.length; i < length; i += 1) {
                    this.removeEvent(params[i]);
                }
            } else if (typeof params === "object") {
                for (var type in params) {
                    this.removeEvent(type, params[type]);
                }
            }
            return this;
        }
    };
    

      

  • 相关阅读:
    vimmate
    vimmultifiles
    Screencast: vim 插件管理策略
    libsvm liblinear 使用心得
    vim常用插件大全
    某人常用vim插件(zz) Henry Read 博客园
    人民网旁边的广告联盟
    c.vim C/C++ IDE Write and run programs. Insert statements, idioms, comments etc. : vim online
    vimpluginmanage
    有效的管理你的vim插件
  • 原文地址:https://www.cnblogs.com/holy-amy/p/9304976.html
Copyright © 2011-2022 走看看