1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| function EventEmitter()
{
var listeners = {};
this.addListener = function(event, listener)
{
if(!listeners[event])
listeners[event] = [];
listeners[event].push(listener);
}
this.emit = function(/*event, [arg1], [arg2], [...]*/)
{
var params =[];
params.push.apply(params,arguments);
var event = params.shift();
if(listeners[event])
{
for(var l=0;l<listeners[event].length;l++)
(listeners[event][l]).apply(null,params);
}
}
}
function PropertiesListeners()
{
this.set = function (property,value)
{
var oldvalue = this[property];
this[property]=value;
this.emit(property+" change",value,oldvalue);
}
};
PropertiesListeners.prototype = new EventEmitter();
var obj = new PropertiesListeners();
obj.addListener('Name change',function(val)
{
console.log('Listener 1 : Name = '+val);
})
obj.set('Name','pierre');
obj.addListener('Name change',function(newval,oldval)
{
console.log('Listener 2 : Name '+oldval+' change to '+ newval);
})
obj.set('Name','paul');
obj.Age = 25;
obj.addListener('Age change',function(newval,oldval)
{
console.log('Listener 3 : Age '+oldval+' change to '+ newval);
})
obj.set('Age',32); |
Partager