事件监听就是一个访问者模式,一个典型的访问者模式可以这么实现:

  1. 首先定义一个类,初始化它的访问者列表;
  2. 对外提供一个添加访问者的接口;
  3. 对外提供一个删除访问者的接口;
  4. 对外提供一个传递信息的接口。
function Input (inputDOM) {
    this.visitiors = {
        "click":[],
        "change":[],
        "special":[] // 自定义事件
    }
    this.inputDOM = inputDOM;
}

Input.prototype.on = function (eventType, callback) {
    if (typeof this.visitiors[eventType] !== "undefined") {
        this.visitiors[eventType].push(callback)
    }
}

Input.prototype.off = function (eventType, callback) {
    var visitors = this.visitiors[eventType];
    if (typeof this.visitiors[eventType] !== "undefined") {
        var index = visitiors.indexOf(callback);
        if (index >= 0) {
            visitiors.splice(index, 1)
        }
    }
}

Input.prototype.trigger = function (eventType, callback) {
    var visitors = this.visitiors[eventType];
    var eventFormat = processEevent(event);
    if (typeof this.visitiors[eventType] !== "undefined") {
        for (var i = 0; i < visitiors.length; i++) {
            visitiors[i](eventFormat);
        }
    }
}

results matching ""

    No results matching ""