32 lines
737 B
TypeScript
32 lines
737 B
TypeScript
export default class EventTarget
|
|
{
|
|
private events : {[key:string]:Function[]} = {};
|
|
public emit(eventName :string, ...args:any[])
|
|
{
|
|
if(this.events[eventName])
|
|
{
|
|
for (const callback of this.events[eventName]) {
|
|
callback(...args);
|
|
}
|
|
}
|
|
}
|
|
public on(eventName :string, callback:Function)
|
|
{
|
|
if(this.events[eventName])
|
|
{
|
|
this.events[eventName].push(callback)
|
|
}else{
|
|
this.events[eventName] = [callback];
|
|
}
|
|
}
|
|
public activeScope : boolean = false;
|
|
scope(f:Function)
|
|
{
|
|
if(this.activeScope)
|
|
{
|
|
f()
|
|
}else{
|
|
this.on('scope', f)
|
|
}
|
|
}
|
|
} |