# 原型方法卸载dom事件

实现once的原理

<button id="a">A</button>

<button id="b">去掉事件</button>
var addEvent = function(target, eventType, handle) {
     if (target.addEventListener) { 
          target.addEventListener(eventType, handle, false); 
      } else { 
          target.attachEvent("on" + eventType, function () {
            handle.call(target, arguments);
          }); 
      }
};
var removeEvent = function(target, eventType, handle) {
    if (target.removeEventListener) {                   // // 所有浏览器,除了 IE 8 及更早IE版本
        target.removeEventListener(eventType, handle,false);
    } else if (target.detachEvent) {                   // IE 8 及更早IE版本
        target.detachEvent("on"+eventType, handle);
    }
}
var f = function(){
    console.log('ddd')

    removeEvent(document.getElementById('a'),'click',f)
}

var A = function(){ 
    this.init();
}
A.prototype.remove = function(){
    console.log('fff')
    this.removeEvent(document.getElementById('a'),'click',this.f)

}
A.prototype.f = function(){
     console.log('ddd') 
     console.log(this instanceof A);
// this.removeEvent(document.getElementById('a'),'click',this.f.bind(this))

//document.getElementById('a').removeEventListener('click',this.f,false)

}
A.prototype.init = function(){
    this.f = this.f.bind(this);
//   this.addEvent(document.getElementById('a'),'click',this.f.bind(this))
  document.getElementById('a').addEventListener('click',this.f,false)
}
A.prototype.addEvent = function(target, eventType, handle) {
     if (target.addEventListener) { 
          target.addEventListener(eventType, handle, false); 
      } else { 
          target.attachEvent("on" + eventType, function () {
            handle.call(target, arguments);
          }); 
      }
};
A.prototype.removeEvent = function(target, eventType, handle) {
    if (target.removeEventListener) {                   // // 所有浏览器,除了 IE 8 及更早IE版本
        target.removeEventListener(eventType, handle,false);
    } else if (target.detachEvent) {                   // IE 8 及更早IE版本
        target.detachEvent("on"+eventType, handle);
    }
}

var a= new A();  
//addEvent(document.getElementById('a'),'click',f)

addEvent(document.getElementById('b'),'click',function(){
    a.remove();
    // removeEvent(document.getElementById('a'),'click',f)
})