JavaScript 自定义事件委托链

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() // => 输出:'Hi, I am Jerry'
jerry.on('greeting', say)
jerry.on('greeting', say2)
jerry.emit('greeting', 'Hi') // => 输出:'Hi, nice meeting you.' 和 'Hi, nice meeting you, too'
jerry.off('greeting', say)
jerry.emit('greeting', 'Hi') // => 只输出:'Hi, nice meeting you, too'

</script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值