1. 程式人生 > >發布+訂閱 event事件

發布+訂閱 event事件

cal cti != 訂閱 for function 重復 als turn

function on(ele,type,f) {//type 對應報社的某個頻道
//若是JS原生事件,我們需要改變綁定方式
if(/^(my)/.test(type)){
ele[type] = ele[type] || [];
var n = ele[type].indexOf(f);
if(n > -1)return;//解決重復綁定
ele[type].push(f);
}else { //需要判斷 type 帶不帶 on;若帶著 on ;就直接用; 不帶的話就補上
// if(/^(on)/.test(type)){
// ele[type] = f;
// }else {
// ele[‘on‘+type] = f;
// }
type = /^(on)/.test(type) ? type : ‘on‘ + type;
ele[type] = f;

// ele.addEventListener(type,f,false);
}
}
//fire(this,‘myFly‘) ----> fire(oDiv,‘myFly‘)
function fire(ele,type,options) {
ele[type] = ele[type] || [];
ele[type].forEach((item)=>{
item && item.call(ele,options);
})
}
function off(ele,type,f) {
if(/^(my)/.test(type)){
ele[type] = ele[type] || [];
var n = ele[type].indexOf(f);
if(n != -1){
ele[type].splice(n,1);
}
}else {
//證明是原生的事件
type = /^on/.test(type) ? type : ‘on‘+type;
ele[type] = null;
}

// ele[type][n] = null;
}

發布+訂閱 event事件