Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
— |
programovani:javascript:observer [2013/07/07 23:14] (aktuální) ladariha vytvořeno |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | ====== Observer ====== | ||
+ | <code javascript> | ||
+ | |||
+ | function Observer{ | ||
+ | this.listeners = []; | ||
+ | |||
+ | this.subscribe = function(callback, event) { | ||
+ | event = event || 'any'; | ||
+ | if (typeof this.listeners[event] === "undefined") { | ||
+ | this.listeners[event] = []; | ||
+ | } | ||
+ | this.listeners[event].push(callback); | ||
+ | }; | ||
+ | |||
+ | this.unsubscribe = function(fn, event) { | ||
+ | event = event || 'any'; | ||
+ | var subs = this.listeners[event] || []; | ||
+ | for (var i = 0, max = subs.length; i < max; i += 1) { | ||
+ | if (subs[i] === fn) { | ||
+ | subs.splice(i, 1); | ||
+ | } | ||
+ | } | ||
+ | }; | ||
+ | |||
+ | this.publish = function(data, event) { | ||
+ | event = event || 'any'; | ||
+ | var subs = this.listeners[event] || []; | ||
+ | for (var i = 0, max = subs.length; i < max; i += 1) { | ||
+ | subs[i](data, event); | ||
+ | } | ||
+ | }; | ||
+ | |||
+ | } | ||
+ | |||
+ | var obs = new Observer(); | ||
+ | |||
+ | obs.subscribe(function(data, event) { | ||
+ | console.log(data); | ||
+ | }, "specListLoaded"); | ||
+ | |||
+ | obs.publish([1,2], "specListLoaded"); | ||
+ | </code> |