`
阅读更多

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

var addEvent = (function () {
    if (document.addEventListener) {
        return function (type, element, fun) {
            element.addEventListener(type, fun, false);
        }
    }
    else if (document.attachEvent) {
        return function (type, element, fun) {
            element.attachEvent('on' + type, fun);
        }
    }
    else {
        return function (type, element, fun) {
            element['on' + type] = fun;
        }
    }
})();
var removeEvent = (function () {
	if (document.removeEventListener) {
		return function (type, element, fun) {
			element.removeEventListener(type, fun, false);
		}
	}
	else if (document.detachEvent) {
		return function (type, element, fun) {
			element.detachEvent('on' + type, fun);
		}
	}
	else {
		return function (type, element, fun) {
			element['on' + type] = null;
		}
	}
})();

 

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

var ring= function () {
        //手机铃声响起或手机震动
    };
    addEvent('收到短信', 手机, ring);

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

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

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script type="application/javascript">
        var sayHello= function () {
            alert("找我干嘛");
        }
    </script>
</head>
<body>
<div id="outDiv" style="width: 200px;height: 50px;background-color: #9a9afb">
    <input type="button" id="myBtn" onclick="sayHello();" value="点我啊"/>
</div>
</body>
</html>

 上例中,sayHello就是回调函数 

XMLHttpRequest的onreadystatechange也是回调函数

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

delButton_1 = new JButton("删除注释");
        delButton_1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String domain=domainTextField1.getText();//Constant2.HOSTS_PATH
                opHosts(domain, false);
            }
        });

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

参考:http://blog.csdn.net/hw1287789687/article/details/45876843

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

 

分享到:
评论

相关推荐

    使用C语言写的回调函数

    回调函数在C语言中是一种非常重要的编程机制,它允许我们将一个函数的地址作为参数传递给另一个函数,由这个函数在适当的时候调用我们传入的函数。这种模式在处理异步事件、信号处理、排序算法以及其他需要在特定...

    mfc下实现回调函数

    在Microsoft Foundation Classes (MFC) 中,回调函数是一种特殊类型的函数,它允许用户代码与库或操作系统进行交互,尤其是在处理异步事件时。回调函数通常作为参数传递给其他函数,以便在特定事件发生时调用。在MFC...

    c++builder回调函数例子

    在C++ Builder中,回调函数是一种关键的设计模式,用于在动态链接库(DLL)中调用主程序中的特定函数。回调函数允许DLL与主程序进行通信,传递数据或执行特定操作。 首先,让我们理解什么是回调函数。回调函数是...

    PB 回调函数,多线程

    标题中的“PB 回调函数,多线程”指的是在编程中使用ProtoBuf(Protocol Buffers,简称PB)实现回调函数来处理多线程应用程序。ProtoBuf是Google开发的一种数据序列化协议,常用于结构化数据的存储和交换,它可以...

    delphi Dll的回调函数

    在Delphi编程环境中,DLL的使用尤为常见,尤其是涉及到回调函数时。回调函数允许DLL将控制权返回给调用者,使得调用者能够处理特定的事件或任务。本篇文章将深入探讨Delphi中DLL的回调函数及其应用。 首先,我们...

    C# 实现回调函数

    回调函数在编程中是一种强大的设计模式,特别是在C#这样的面向对象语言中,它允许你在方法执行完毕后调用另一个特定的函数。回调函数通常用于异步编程,事件处理或者作为参数传递,使得代码更加灵活和可扩展。接下来...

    C#回调函数示例

    在编程领域,回调函数是一种非常重要的设计模式,它允许我们将一个方法作为参数传递给另一个方法,在特定条件下由被调用的方法执行。在C#中,回调函数同样被广泛使用,尤其是在异步编程、事件处理和自定义算法中。本...

    java 回调函数 实现

    在Java编程中,回调函数是一种设计模式,它允许一个对象在另一个对象执行特定操作后接收通知或进行处理。这种机制通常用于事件驱动编程或者异步编程中,使得代码能够响应某些特定事件的发生。在给定的场景中,我们...

    Android回调函数的例子

    在编程领域,回调函数是一种设计模式,它允许我们定义一个函数,这个函数可以在另一个函数执行完毕后被调用。在Android开发中,回调函数扮演着至关重要的角色,尤其是在处理异步操作、事件监听以及用户交互时。本...

    动态库回调函数示例

    本示例"动态库回调函数示例"旨在演示如何在 VC++6.0 下创建和使用 DLL,特别是在 DLL 中定义回调函数。回调函数是一种编程技术,允许 DLL 将控制权交还给调用它的应用程序,以便在特定事件发生时执行自定义操作。 ...

    C语言中的回调函数实例

    在C语言中一般用typedef来为回调函数定义别名(参数名)。 别名通过宏定义typedef来实现,不是简单的宏替换。可以用作同时声明指针型的多个对象。 比如: 代码如下:char *pa,pb;//pa是一个char型指针,但pb是一个...

    osg回调函数的使用

    【osg回调函数的使用】 OpenSceneGraph(OSG)是一个强大的3D图形库,它提供了丰富的功能来构建复杂的三维场景。在OSG中,回调函数是实现用户自定义行为的关键工具,它们允许开发者在特定事件发生时执行特定的代码...

    VC++ DLL 实现回调函数的实例

    回调函数则是编程中一种常见的设计模式,它允许函数将控制权返回给调用者,使得调用者可以在适当的时候执行特定的处理逻辑。在VC++中,将回调函数实现在DLL中,可以提供更加灵活的跨模块通信方式。 首先,我们需要...

    lwip的回调函数学习笔记与相关函数释疑

    lwip的回调函数学习笔记与相关函数释疑 lwip 是一个轻量级的TCP/IP协议栈,广泛应用于嵌入式系统中。在lwip中,回调函数是一种重要的机制,用于处理网络事件和数据传输。本文将详细介绍lwip的回调函数学习笔记与...

    Delphi中DLL的回调函数使用

    回调函数是DLL中一个特殊的概念,它允许DLL将控制权交还给调用者,让调用者执行特定的代码。这种机制在处理异步操作、事件处理或自定义数据处理时非常有用。本文将深入探讨Delphi中DLL的回调函数的使用及其相关知识...

    C#回调函数

    在C#编程中,回调函数是一种非常重要的设计模式,它允许我们传递一个方法作为参数到另一个方法中,以便在特定事件发生或者特定条件满足时执行。这种机制使得代码具有高度的灵活性和可扩展性,特别是在处理异步操作、...

    BCB线程中调用主界面的回调函数

    网上的回调函数都是API例子,学习函数指针倒是不错,可是很难让初学者立即应用。常见的情况是辅线程完成某事件后需要“通知”主界面,比如常见的进度条——线程中完成一定的进度后即通知主界面显示到一定的刻度。本...

    matlab串口收发及回调函数编程

    在串口通信中,我们可以设置一个回调函数来处理接收到的数据。首先定义一个函数,例如: ```matlab function serialCallback(obj, event) data = obj.InputBuffer; % 在这里处理接收到的数据 end ``` 然后,...

    回调函数被连续执行两次或多次的原因

    ### 回调函数被连续执行两次或多次的原因 在编程领域,回调函数是一种常见的编程模式,它允许将函数作为参数传递给另一个函数,并在适当的时机由后者调用。这种模式非常有用,尤其是在处理异步操作时。然而,在某些...

    C++回调函数.pdf////C++回调函数.pdfC++回调函数.pdf

    ### C++中的回调函数及其应用 #### 回调函数的概念及定义 回调函数是一种特殊的函数,在C++编程中被广泛使用。回调函数的基本思想是将一个函数作为参数传递给另一个函数,然后在适当的时机调用这个传递进来的函数...

Global site tag (gtag.js) - Google Analytics