Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const eventMixin = {
- on(event,handler){
- if(!this._eventHandlers){
- this._eventHandlers = {}
- }
- if(!this._eventHandlers[event]){
- this._eventHandlers[event] = []
- }
- this._eventHandlers[event].push(handler)
- },
- off(event,handler){
- const handlers = this._eventHandlers && this._eventHandlers[event]
- if(!handlers){
- return;
- }
- for(let i = 0; i<handlers.length; i++){
- if(handlers[i] === handler){
- handlers.splice(i--,1);
- }
- }
- },
- trigger(event,...args){
- this._eventHandlers[event].forEach(handler => handler.apply(this,args))
- }
- }
- class Menu {
- select(value,amount){
- this.trigger("select",value,amount)
- }
- }
- Object.assign(Menu.prototype,eventMixin)
- function writeHappyMessageWhenSelected(){
- console.log("Yeyyyy you selected products")
- }
- var menu = new Menu();
- menu.on("select",writeHappyMessageWhenSelected)
- menu.on("select", (...args) => console.log("secilenler",args))
- menu.select("apple",33)
- VM184308:2 Yeyyyy you selected products
- VM184400:1 secilenler (2) ["apple", 33]
- menu.off("select",writeHappyMessageWhenSelected)
- menu.select("apple",33)
- VM184400:1 secilenler (2) ["apple", 33]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement