function Event() {
this._events = {};
}
// 綁定事件方法
Event.prototype.on = function (eventType, callback) {
// 如果事件不存在
if (!this._events[eventType]) {
// 創(chuàng)建事件存起來,值為空數(shù)組
this._events[eventType] = [];
}
// 將事件回調(diào)函數(shù)添加進(jìn)去
this._events[eventType].push(callback);
};
// 解綁事件方法
Event.prototype.off = function (eventType, callback) {
this._events[eventType] = this._events[eventType].filter((item) => item !== callback); //將返回的數(shù)組接住起到刪除的作用
};
// 觸發(fā)事件方法
Event.prototype.emit = function (eventType, data) {
this._events[eventType].forEach((callback) => callback(data));
};
// 綁定一次性事件方法
Event.prototype.once = function (eventType, callback) {
const that = this;
// 如果事件不存在
if (!this._events[eventType]) {
// 創(chuàng)建事件存起來,值為空數(shù)組
this._events[eventType] = [];
}
const newFn = function () {
// 調(diào)用一次
callback();
// 解綁事件
that.off(eventType, newFn);
};
// 將事件回調(diào)函數(shù)添加進(jìn)去
this._events[eventType].push(newFn);
};
const event = new Event();
event.once('click', function () {
console.log(111);
});
event.on('click', function () {
console.log(222);
});
const callback = function () {
console.log(333);
};
event.on('click', callback);
event.emit('click');
event.off('click', callback);
event.emit('click');
面試題
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 自媒體撈錢的模式看似多樣化,其實(shí)本質(zhì)的套路依舊是圍繞著“賣”字展開的: 賣廣告/流量 賣產(chǎn)品 賣服務(wù) 賣人脈 而今...