2016-08-03 1 views
-2

реализовать api настраиваемого объекта события и функцию, отображаемую в примечании (тест 1). Чтобы объект api объекта Event необходимо повторно использовать с помощью расширения (тест 2).Как реализовать api пользовательского объекта события?

Event.on('test',function(result){ 
    console.log(result); 
}) 
Event.on('test',function(){ 
    console.log('test'); 
}) 
Event.emit('test','hello world');//output 'test'和'hello world' 
//test2 
var person1 = {}; 
var 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'); //output 'person1' 
person1.emit('call1'); //not output 
person1.emit('call1'); //not output 
person1.emit('call1'); //output 'person2' 

var Event= { 
    //through on api watch event evenName 
    //if event eventName was triggered,execute callback function 
    on:function(eventName,callback){ 
     //your code 
    }, 
    //trigger event eventName 
    emit:function(eventName){ 
     //your code 
    } 
} 
+0

SO не является услугой написания кода. Это очень похоже на «пожалуйста, заполните пробелы». Можете ли вы показать нам, что вы пробовали, и где ваша проблема? – Bergi

+0

Предполагая, что это на узле, почему вы не используете встроенный [EventEmitter] (https://nodejs.org/api/events.html)? – Bergi

ответ

-1
var Event = { 
    on: function(eventName, callback){ 
     //todo 
     if(!this[eventName]) 
     this[eventName] = []; 
     this[eventName].push(callback); 
    }, 
    emit: function(eventName){ 
    //todo 
    if(this[eventName]) 
    Array.prototype.forEach.call(this[eventName], function(func){ 
     func.call(this); 
    }); 
    } 
} 

Event.on("one", function(){ 
    console.log("go"); 
}) 
Event.on("one", function(){ 
    console.log("gogo"); 
}) 

Event.emit("one"); 

var person1 = Object.assign({}, Event); 
var person2 = Object.assign({}, Event); 
person1.on("666", function(){ 
    console.log("person1 666"); 
}) 
person2.on("777", function(){ 
    console.log("person2 777"); 
}) 

person1.emit("666"); 
person1.emit("777"); 
person2.emit("777"); 
person2.emit("666"); 
Смежные вопросы