能撸代码就别BB,直接上代码:
var pubsub = {}; (function(p) { var topics = {}, subUid = -1; //发布 p.publish = function(topic, msg) { if (!topics[topic]) { return false; } var i = 0, subscribers = topics[topic], len = subscribers.length; for (; i < len; i++) { subscribers[i].func(msg); } return this; }; //订阅 p.subscribe = function(topic, func) { if (!topics[topic]) { topics[topic] = []; } var token = (++subUid).toSring(); topics[topic].push({ token: token, func: func }); return token; }; //取消订阅 p.unsubscribe = function(token) { var m, i, len; for (m in topics) { if (topics[m]) { for (i = 0, len = topics[m].length; i < len; i++) { if (topics[m][i].token === token) { topics[m][i].splice(i, 1); return token; } } } } return false; }; })(pubsub);