addEventListener重复绑定的问题

写了一段代码
var checkbox={
checkAllBox:'checkAllBox',
uncheck:'uncheck',
data_checked:'data-checked',
checkbox_css:'checkbox-css',
checked:'checked',
cancelCheck:'cancelCheck',
select_one:function () {
const checkAllBox=this.checkAllBox;
const uncheck=this.uncheck;
const checkbox_css=this.checkbox_css;
const checked=this.checked;
const cancelCheck=this.cancelCheck;
var checkOneBox_css=document.querySelectorAll('.'+checkbox_css);
for(var i=0;i<checkOneBox_css.length;i++){
(function (i){
if(checkOneBox_css[i].className.indexOf(uncheck)===-1){
checkOneBox_css[i].addEventListener('click',function (event) {
console.log(event.target);
event.stopPropagation();
var event_name=event.target.className;
if(event.target===this&&event.target.className.indexOf(checkAllBox)===-1){
if(event_name.indexOf(checked)!==-1){
event.target.className=event_name.replace(checked,cancelCheck);
}else{
if(event_name===checkbox_css){
event.target.className +=' '+checked;
}else{
event.target.className=event_name.replace(cancelCheck,checked);
}
}
}
},false);
}
})(i);
}
},
checkbox:function () {
this.select_one();
}
};
每次调用checkbox.checkbox(); 会重复绑定addEventListener,该怎么办。。。

绑定前先删除先前绑定的事件,详见http://blog.csdn.net/chaoyang89111/article/details/78131250

同上,先解除绑定,再绑定。

直接用onclick方法替换addEventListener

我知道重复绑定可以先解绑,如果是jQuery很简单,或者函数写在外面也是,可是你们看下我的函数写法,再说下这个构造函数怎么解绑啊

var checkbox={
checkAllBox:'checkAllBox',
uncheck:'uncheck',
data_checked:'data-checked',
checkbox_css:'checkbox-css',
checked:'checked',
cancelCheck:'cancelCheck',

select_one:function () {
    const checkAllBox=this.checkAllBox;
    const uncheck=this.uncheck;
    const checkbox_css=this.checkbox_css;
    const checked=this.checked;
    const cancelCheck=this.cancelCheck;

    var checkOneBox_css=document.querySelectorAll('.'+checkbox_css);

    for(var i=0;i<checkOneBox_css.length;i++){
        (function (i){
            if(checkOneBox_css[i].className.indexOf(uncheck)===-1){

                checkOneBox_css[i].addEventListener('click',function (event) {  console.log(event.target);

                    event.stopPropagation();
                    var event_name=event.target.className;

                    if(event.target===this&&event.target.className.indexOf(checkAllBox)===-1){

                        if(event_name.indexOf(checked)!==-1){
                            event.target.className=event_name.replace(checked,cancelCheck);
                        }else{
                            if(event_name===checkbox_css){
                                event.target.className +=' '+checked;
                            }else{
                                event.target.className=event_name.replace(cancelCheck,checked);
                            }
                        }
                    }
                },false);
            }
        })(i);
    }
    checkOneBox_css.removeEventListener('click',function (event) {},false);    //  插入在这边试试看
},
checkbox:function () {
    this.select_one();
}

};