Ei kuvausta

EventTarget.js 931B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Copyright 2016 wkh237@github. All rights reserved.
  2. // Use of this source code is governed by a MIT-style license that can be
  3. // found in the LICENSE file.
  4. export default class EventTarget {
  5. listeners : any;
  6. constructor() {
  7. this.listeners = {}
  8. }
  9. addEventListener(type:string, cb : () => void) {
  10. if(!(type in this.listeners)) {
  11. this.listeners[type] = []
  12. }
  13. this.listeners[type].push(cb)
  14. }
  15. removeEventListener(type:string, cb:() => any) {
  16. if(!(type in this.listeners))
  17. return
  18. let handlers = this.listeners[type]
  19. for(let i in handlers) {
  20. if(cb === handlers[i]) {
  21. handlers.splice(i,1)
  22. return this.removeEventListener(type, cb)
  23. }
  24. }
  25. }
  26. dispatchEvent(event:Event) {
  27. if(!(event.type in this.listeners))
  28. return
  29. let handlers = this.listeners[event.type]
  30. for(let i in handlers) {
  31. handlers[i].call(this, event)
  32. }
  33. }
  34. }