node模拟事件源码

面试某个公司的一道编程题,这道题是要求完成

var Event={

on:function(eventName,callback){


//你的代码
},
 
emit:function(eventName){
//你的代码
}

}

实现下面的功能:
Event.on("test",function(){console.log("test")});
Event.on("test",function(str){console.log(str)});
Event.emit("test","hello world");//运行这句代码可以输出test和hello world

var person1={},person2={};
Object.assign(person1,Event);
Object.assign(person2,Event);
person1.on("call1",function(){
    console.log("person1");
});
person2.on("call2",function(){
    console.log("person2");
});
person1.emit("call1");//输出person1;
person1.emit("call2");//不输出
person2.emit("call1");//不输出
person2.emit("call2");//输出person2;


下面是我写出来的代码:
var Event={
    on:function(eventName,callback){
        eventName=eventName=="on"||eventName=="emit"? eventName+"1":eventName;
        if(this["array"]==undefined){
            this["array"]={};
        }
        if(this[eventName]==undefined){
            this[eventName]=[];
        }
            this[eventName].push(callback);
            this["array"][eventName]= this[eventName];

    },
    emit:function(eventName){
        eventName=eventName=="on"||eventName=="emit"? eventName+"1":eventName;
        var str=arguments[1];
        if( this["array"][eventName]){
            for(var i in this["array"][eventName]){

                this["array"][eventName][i].call(null,str);
            }
        }
    }

};
测试可以实现上述功能


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值