博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回调函数
阅读量:7222 次
发布时间:2019-06-29

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

1今天说一下我对回调函数的认识和理解. 

Js代码  
  1. var addEvent = (function () {  
  2.     if (document.addEventListener) {  
  3.         return function (type, element, fun) {  
  4.             element.addEventListener(type, fun, false);  
  5.         }  
  6.     }  
  7.     else if (document.attachEvent) {  
  8.         return function (type, element, fun) {  
  9.             element.attachEvent('on' + type, fun);  
  10.         }  
  11.     }  
  12.     else {  
  13.         return function (type, element, fun) {  
  14.             element['on' + type] = fun;  
  15.         }  
  16.     }  
  17. })();  
  18. var removeEvent = (function () {  
  19.     if (document.removeEventListener) {  
  20.         return function (type, element, fun) {  
  21.             element.removeEventListener(type, fun, false);  
  22.         }  
  23.     }  
  24.     else if (document.detachEvent) {  
  25.         return function (type, element, fun) {  
  26.             element.detachEvent('on' + type, fun);  
  27.         }  
  28.     }  
  29.     else {  
  30.         return function (type, element, fun) {  
  31.             element['on' + type] = null;  
  32.         }  
  33.     }  
  34. })();  

 

其实我们收到短信,手机铃声响起就是一个回调函数

Js代码  
  1. var ring= function () {  
  2.         //手机铃声响起或手机震动  
  3.     };  
  4.     addEvent('收到短信', 手机, ring);  

 我们读小学时,午休会让班长(监听器)巡逻,看哪个小伙伴(事件目标)睡觉不老实(比如说话打闹,这是事件),一旦发现就通知班主任(事件处理程序). 

这里涉及到4个概念: 
(1)监听器:负责不断地检查各个元素,看是否有事件发生,我们可以先简单地理解为轮询; 
(2)事件:比如小伙伴挠别人脚丫,这个按钮被点击了. 
(3)事件目标:事件发生在谁身上,这个按钮被点击了,那么这个按钮就是target 
(4)事件处理程序:当事情发生时该怎么办呢?交给谁处理呢?比如班长发现小明捣乱不让同桌睡觉,就会通知班主任(事件处理程序)处理. 
回调函数就相当于事件处理程序.上述代码中的ring就是回调函数,也是事件处理程序.

Html代码  
  1. <html>  
  2. <head lang="en">  
  3.     <meta charset="UTF-8">  
  4.     <title></title>  
  5.     <script type="application/javascript">  
  6.         var sayHellofunction () {  
  7.             alert("找我干嘛");  
  8.         }  
  9.     </script>  
  10. </head>  
  11. <body>  
  12. <div id="outDiv" style="width: 200px;height: 50px;background-color: #9a9afb">  
  13.     <input type="button" id="myBtn" onclick="sayHello();" value="点我啊"/>  
  14. </div>  
  15. </body>  
  16. </html>  

 上例中,sayHello就是回调函数 

XMLHttpRequest的onreadystatechange也是回调函数

中有没有回调函数呢?没有!js中可以把函数当做变量来传递,但是java中不能,java中是通过接口来实现监听器模式的.

Js代码  
  1. delButton_1 = new JButton("删除注释");  
  2.         delButton_1.addActionListener(new ActionListener() {  
  3.             @Override  
  4.             public void actionPerformed(ActionEvent e) {  
  5.                 String domain=domainTextField1.getText();//Constant2.HOSTS_PATH  
  6.                 opHosts(domain, false);  
  7.             }  
  8.         });  

 如上java 代码,给按钮的点击事件增加了一个事件处理程序,我们传过去的是一个接口,当事件(用户单击)发生时就会执行actionPerformed 方法,而不是执行其他方法.也就是说actionPerformed 相当于一个事件处理程序,具体怎么反应,我们可以实现这个接口,来做具体的响应. 

参考:

http://blog.csdn.net/hw1287789687/article/details/45877693

你可能感兴趣的文章
SDWebImage源码解读 之 UIImage+GIF
查看>>
pg_dump实例详解(备份postgresql和greenplum数据库)
查看>>
前端学HTTP之报文首部
查看>>
[充电]多线程无锁编程--原子计数操作:__sync_fetch_and_add等12个操作
查看>>
linux系统中如何查看日志(转)
查看>>
谈谈常用清除浮动的方法
查看>>
Atitit opencv 模板匹配
查看>>
JavaScript的parseint()函数
查看>>
shell脚本,根据字符串获取行号的
查看>>
Docker学习笔记 - Docker容器与外部网络的连接
查看>>
Codeforces Round #396 (Div. 2) D. Mahmoud and a Dictionary 并查集
查看>>
微信小程序 view 布局
查看>>
一步一步学Python(2) 连接多台主机执行脚本
查看>>
【AUC】二分类模型的评价指标ROC Curve
查看>>
Android井字游戏(一)首页制作
查看>>
VM虚拟机安装之后出现无法自动登录到桌面以及__vmware_user__怎么办
查看>>
QTcpSocket的连续发送数据和连续接收数据
查看>>
客服系统微服务架构的演化
查看>>
Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范推荐标准
查看>>
VB二进制文件读写
查看>>