日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

观察者模式和js自定义事件

發(fā)布時(shí)間:2025/3/12 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 观察者模式和js自定义事件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

事件是一種叫做觀察者的設(shè)計(jì)模式,觀察者模式由兩類(lèi)對(duì)象組成:主體和觀察者。主體負(fù)責(zé)發(fā)布事件,同時(shí)觀察者通過(guò)訂閱這些事件來(lái)觀察該主體。拿DOM來(lái)說(shuō),DOM就是主體,事件處理代碼便是觀察

下面是一個(gè)自定義事件,

function EventTarget() {this.handlers = {}; } EventTarget.prototype = {constructor: EventTarget,addHandler: function (type, handler) {if (typeof this.handlers[type] == 'undefined') {this.handlers[type] = [];}this.handlers[type].push(handler);},fire: function (event) {if (!event.target) {event.target = this;}if (this.handlers[event.type] instanceof Array) {var handlers = this.handlers[event.type];for (var i = 0, len = handlers.length; i < len; i++) {handlers[i](event);}}},removeHandler: function (type, handler) {if (this.handlers[type] instanceof Array) {var handlers = this.handlers[type];for (var i = 0, len = handlers.length; i < len; i++) {if (handlers[i] === handler) {break;}}handlers.splice(i, 1);}} }自定義事件的調(diào)用,addHandler() 添加事件,fire() 執(zhí)行事件,removeHandler() 刪除綁定的事件。

function handleMessage1(event) {console.log("111--", event.message); } function handleMessage2(event) {console.log("222--", event.message); } var target = new EventTarget(); // 添加事件 target.addHandler('message', handleMessage1); target.addHandler('message', handleMessage2); // 執(zhí)行事件 target.fire({type: 'message',message: 'hello!' })// 刪除事件 target.removeHandler('message', handleMessage1); // 執(zhí)行事件 target.fire({type: 'message',message: 'holy' })


總結(jié)

以上是生活随笔為你收集整理的观察者模式和js自定义事件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。