let obj = {};
window.$on = (name, fn) => {
if (!obj[name]) {
obj[name] = [];
}
obj[name].push(fn);
}
window.$emit = (name, value) => {
if (obj[name]) {
obj[name].forEach(fn => {
fn(value);
})
}
}
window.$off = (name, fn) => {
if (name) {
if (fn) {
let index = obj[name].indexOf(fn);
index>-1 && obj[name].splice(index, 1);
} else {
obj[name].length = 0;
}
}
}
export default {
$on,
$emit,
$off
}
测试一下
$on("myTest", (data) => {
console.log(data);
})
$emit("myTest", "GGGGGG")
$on("myTest1", (data) => {
console.log(data);
})
$emit("myTest1", "FFFFFF")