博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js简易版自定义事件及其应用
阅读量:5012 次
发布时间:2019-06-12

本文共 1081 字,大约阅读时间需要 3 分钟。

老话题,关于js的自定义事件,用处很多(控件控都懂的..),最明显的是实现观察者模式.

简易版代码:

View Code
1 function Class1(){       2     }  3     Class1.prototype ={  4         //间接调用  5         evt : function(){  6             if(this.onEvt){  7                 for(i=0; i

主要涉及到参数传递问题,由于事件处理函数是没有参数的,所以用了个包装类将其转换了下,实现了参数的传递,主要是arguments和apply的使用.

 

相关

jq提供了实现自定义事件的函数.主要是bind,unbind,trigger顾名思义就是用来实现事件绑定以及触发.

比较简单,直接上代码(列子是实现观察者模式),具体使用查api

View Code
1 //被观察对象  2 var Subject = {
3 }; 4 $(Subject).bind("evtHandler",function(event,sName){
5 console.log("i'm "+sName); 6 }) 7 8 //观察者 9 var Observer = {
10 count : 0 11 }; 12 //订阅事件 13 Observer.regist = function(){
14 $(Subject).bind("evtHandler.Observer",function(event,sName){
15 Observer.count++; //当订阅的事件被触发时,进行逻辑处理 16 console.log(sName +"'s count: "+Observer.count); 17 }) 18 } 19 Observer.regist(); 20 21 //触发事件 22 $(Subject).trigger("evtHandler",["num1"]);

 

其他:关于jq的事件处理实现细节可以查看源代码,园子里有个,偷懒的话可以看看.

转载于:https://www.cnblogs.com/Quains/archive/2012/04/01/2427868.html

你可能感兴趣的文章
ACM/ICPC 之 模拟 (HNUOJ 13391-换瓶模拟)
查看>>
JavaWeb学习——JSP基础
查看>>
Eclipse tomcat server 无法添加项目
查看>>
黑寡妇黄飞鸿
查看>>
leetcode 217 Contains Duplicate 数组中是否有重复的数字
查看>>
The Ctrl & CapsLock `problem'
查看>>
MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
查看>>
linux故障判断
查看>>
Leetcode 23. Merge k Sorted Lists(python)
查看>>
Java进阶知识点6:并发容器背后的设计理念 - 锁分段、写时复制和弱一致性
查看>>
Makefile ===> Makefile 快速学习
查看>>
face detection[HR]
查看>>
java性能调优工具
查看>>
C# 其他的Url 文件的路径转化为二进制流
查看>>
cmake使用
查看>>
ios7上隐藏status bar
查看>>
构造方法和全局变量的关系
查看>>
python3基础05(有关日期的使用1)
查看>>
ArrayList的使用方法
查看>>
面向对象高级
查看>>