观察者模式是js中的一个很重要的概念,我们新手总觉得很难理解(我想很多老手也不一定很理解吧,那我们就来写一个最简单的观察者模式吧,重点是让大家理解它的运作)
// 观察者模式
var obj = {};
obj.events = {};
obj.on = function (event, handler) {
if (obj.events[event]) {
obj.events[event.push(handler)];
return;
}
obj.events[event] = [handler];
}
obj.emit = function (event) {
if (!obj.events[event]) {
console.log('该事件不存在');
return
}
var args = [].slice.call(arguments, 1)
obj.events[event].forEach(item => {
item.call(this, args)
})
}
obj.on('sayHi', function (name) {
console.log('Hi, my name is ' + name)
});
obj.emit('sayHi', 'lizzy');