購読——発表者モードが簡単に実現されます.
7480 ワード
// Even
class Even{
constructor(){
this._events = {}; // , , ,
}
$on(even,fn){
if(this._events[even]){ // , fn
this._events[even].push(fn);
}else{ // , ,
this._events[even] = [];
this._events[even].push(fn);
}
}
$emit(even){ //
if(this._events[even]){ // ,
this._events[even].forEach(fn => void fn());
}
}
}
//
let today = new Even(); // today
//
today.$on("goToSchool",carryYourBag);//
today.$on("goToSchool",rideBicycle);
today.$on("goToSchool",sayHiToTeacher);
//
today.$emit("goToSchool");
//
function carryYourBag(){
console.log(" !");
}
function rideBicycle(){
console.log(" !");
}
function sayHiToTeacher(){
console.log(" , !");
}
出力:カバンを背負いました.自転車に乗りました.学校に着きました.先生に挨拶しました.[Dune]exited with code=0 in 0.69 seconds