当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。
最简单的例子,比如给元素添加事件监听
documentElement.addEventListener('click', function (event) {})
全局EventBus写法
var Event = (function () {
var clientList = {}
var listen = function (key, fn) {
if (!clientList[key]) {
clientList[key] = []
}
clientList[key].push(fn)
}
var trigger = function () {
var key = Array.prototype.shift.call(arguments)
var fns = clientList[key]
if (!fns || fns.length === 0) {
return false
}
for (var i = 0; i < fns.length; i++) {
fns[i].apply(this, arguments)
}
}
var remove = function (key, fn) {
var fns = clientList[key]
if (!fns) {
return false
}
if (!fn) {
fns.length = 0
} else {
var index = fns.findIndex(e => e === fn)
fns.splice(index, 1)
}
}
return {
listen,
trigger,
remove
}
})()