Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. const eventMixin = {
  2. on(event,handler){
  3. if(!this._eventHandlers){
  4. this._eventHandlers = {}
  5. }
  6. if(!this._eventHandlers[event]){
  7. this._eventHandlers[event] = []
  8. }
  9. this._eventHandlers[event].push(handler)
  10. },
  11. off(event,handler){
  12. const handlers = this._eventHandlers && this._eventHandlers[event]
  13. if(!handlers){
  14. return;
  15. }
  16. for(let i = 0; i<handlers.length; i++){
  17. if(handlers[i] === handler){
  18. handlers.splice(i--,1);
  19. }
  20. }
  21. },
  22.  
  23. trigger(event,...args){
  24. this._eventHandlers[event].forEach(handler => handler.apply(this,args))
  25. }
  26.  
  27. }
  28.  
  29. class Menu {
  30. select(value,amount){
  31. this.trigger("select",value,amount)
  32. }
  33.  
  34. }
  35.  
  36. Object.assign(Menu.prototype,eventMixin)
  37.  
  38. function writeHappyMessageWhenSelected(){
  39. console.log("Yeyyyy you selected products")
  40. }
  41.  
  42.  
  43. var menu = new Menu();
  44.  
  45. menu.on("select",writeHappyMessageWhenSelected)
  46. menu.on("select", (...args) => console.log("secilenler",args))
  47.  
  48. menu.select("apple",33)
  49. VM184308:2 Yeyyyy you selected products
  50. VM184400:1 secilenler (2) ["apple", 33]
  51.  
  52. menu.off("select",writeHappyMessageWhenSelected)
  53.  
  54. menu.select("apple",33)
  55. VM184400:1 secilenler (2) ["apple", 33]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement