自用的一个微型事件发布/订阅模块
- 支持链式操作
- 支持批量订阅事件
- 啦啦啦,卖个萌
首先引入本模块:
<script src="//path/to/eventer.js"></script>
我们给现有对象obj_margox绑定本模块:
var obj_margox = {
'name' : 'Margox',
'age' : 26,
'sex' : 'male',
'isSingle' : true,
'girlFriend' : null
}
Eventer(obj_margox);
现在obj_margox这个对象已经具有了事件发布/订阅的功能
通过on方法可以订阅单个或者多个事件
// 订阅单个事件
obj_margox.on('grow', function() {
this.age = this.age + 1;
console.log(this.name + ' is ' + this.age + 'years old.');
});
// 订阅多个事件
obj_margox.on({
'hungry' : function() {
console.log(this.name + ' is hungry!');
},
'tired' : function() {
console.log(this.name + ' need a rest!');
},
'eat' : function(food) {
console.log(this.name + ' just ate some ' + food);
}
});
通过trigger方法来发布(触发)一个事件
obj_margox.trigger('grow'); // Margox is 27 years old.
obj_margox
.trigger('hungry') // Margox is hungry!
.trigger('tired') // Margox need a rest!
.trigger('eat', 'breads'); // Margox just ate some breads
通过off方法来取消订阅指定的事件
obj_margox
.off('hungry') // 取消订阅hungry事件
.trigger('hungry'); // nothing