标签:
网易2017内推笔试题
要求:
请实现下面的自定义事件Event对象的接口,功能见注释(测试1)
该Event对象的接口需要能被其他对象拓展复用(测试2)
1 //测试1 2 Event.on(‘test‘,function(result){ 3 console.log(result); 4 }); 5 Event.on(‘test‘,function(){ 6 console.log(‘test‘); 7 }); 8 Event.emit(‘test‘,‘hello world‘); //输出‘hello world‘ 和 ‘test‘ 9 //测试2 10 var person1 = {}; 11 var person2 = {}; 12 Object.assign(person1, Event); 13 Object.assign(person2, Event); 14 person1.on(‘call1‘,function(){ 15 console.log(‘person1‘); 16 }); 17 person2.on(‘call2‘,function(){ 18 console.log(‘person2‘); 19 }); 20 person1.emit(‘call1‘); //输出‘person1‘ 21 person2.emit(‘call2‘); //没有输出 22 person1.emit(‘call1‘); //没有输出 23 person2.emit(‘call2‘); //输出‘person2‘ 24 25 26 var Event = { 27 //通过on接口监听事件eventName 28 //如果事件eventName被触发,则执行callback回调函数 29 on:function(eventName, callback){ 30 //你的代码 31 }, 32 //触发事件 eventName 33 emit:function(eventName){ 34 //你的代码 35 } 36 };
Object.assign(target, ...sources) 可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象。
这里有篇解决的……但是没看明白http://blog.daraw.cn/2016/08/02/javascript-event-emitter/
标签:
原文地址:http://www.cnblogs.com/haoyijing/p/5738245.html