Warden
is function that extends object with methods listen
, unlisten
, emit
, stream
.
var empty = Warden();
empty.listen('foo', function(event){
console.log(event.message);
});
empty.emit({type: 'foo', message: 'Hello World!'});
// -> Hellow World!
When object is already exists.
var module = {prop: 'val'}
Warden(module);
// now module has Warden methods
module.listen('foo', function(event){
console.log(event.message);
console.log(this.prop);
});
module.emit({type: 'foo', message: 'Hello World!'});
// -> Hellow World!
// -> val
With modules which already have Pub/Sub methods with addEventListener
or on
methods
Warden(document);
document.listen('click', function(){
console.log('Hey! You clicked at me!');
});
//or
If your module implemented as class constructor:
var Mammal = Warden(function Mammal(name){
this.name = name;
});
Mammal.prototype.say = function(){
this.emit('say', {
name: this.name
});
}
var dog = new Mammal('Zorg');
//subscribing on event
dog.listen('say', function(e){
console.log('Hello my name is ' + e.name);
});
dog.say();
// -> Hello my name is Zorg;