event.js 842 B

12345678910111213141516171819202122232425262728293031
  1. var initEvent = function (cos) {
  2. var listeners = {};
  3. var getList = function (action) {
  4. !listeners[action] && (listeners[action] = []);
  5. return listeners[action];
  6. };
  7. cos.on = function (action, callback) {
  8. getList(action).push(callback);
  9. };
  10. cos.off = function (action, callback) {
  11. var list = getList(action);
  12. for (var i = list.length - 1; i >= 0; i--) {
  13. callback === list[i] && list.splice(i, 1);
  14. }
  15. };
  16. cos.emit = function (action, data) {
  17. var list = getList(action).map(function (cb) {
  18. return cb;
  19. });
  20. for (var i = 0; i < list.length; i++) {
  21. list[i](data);
  22. }
  23. };
  24. };
  25. var EventProxy = function () {
  26. initEvent(this);
  27. };
  28. module.exports.init = initEvent;
  29. module.exports.EventProxy = EventProxy;