JavaScript 自定义事件委托链
<script type="text/javascript" >
function People(name){
this.name = name;
var events = [];
this.on = function(eventName,func){
if (events[eventName] == undefined) {
events[eventName] = [];
}
events[eventName].push(func);
};
this.off = function(eventName,func){
var index = events[eventName].indexOf(func);
if (index>-1) {
events[eventName].splice(index, 1);
}
}
this.emit = function(eventName) {
var args = [];
var len = arguments.length;
for (var i = 1; i< len; i++) {
args[i -1] = arguments[i];
}
len = events[eventName].length;
for (var i = 0; i < len; i++) {
events[eventName][i](args);
}
}
this.sayHi = function() {
console.log("Hi, I am "+ this.name);
}
}
function say (greeting) {
console.log(greeting + ', nice meeting you.')
}
function say2 (greeting) {
console.log(greeting + ', nice meeting you, too')
}
var jerry = new People('Jerry')
jerry.sayHi()
jerry.on('greeting', say)
jerry.on('greeting', say2)
jerry.emit('greeting', 'Hi')
jerry.off('greeting', say)
jerry.emit('greeting', 'Hi')
</script>