目标:封装一个对象,使其拥有 $on
, $emit
和 $off
方法,进行事件的订阅、抛发和移除。
实现过程如下:
const eventList = {}
const $on = function(eventName,callback){
if(!eventList[eventName]){
eventList[eventName] = [];
}
eventList[eventName].push(callback);
}
const $emit = function(eventName,params){
if(eventList[eventName]){
var arr = eventList[eventName];
arr.forEach((cb)=>{
cb(params)
})
}
}
const $off = function(eventName,callback){
if(eventList[eventName]){
if(callback){
var index = eventList[eventName].indexOf(callback);
eventList[eventName].splice(index,1);
}else{
eventList[eventName].length = 0;
}
}
}
export default {
$on,
$emit,
$off
}
网友评论