钩子函数和回调函数的区别

一般认为,钩子函数就是回调函数的一种,其实还是有差异的,差异地方就是:触发的时机不同。

先说钩子函数:

钩子(Hook)概念源于Windows的消息处理机制,通过设置钩子,应用程序对所有消息事件进行拦截,然后执行钩子函数。

let btn = document.getElementById("btn");
btn.onclick = () => {
    console.log("i‘m a hook");
}

上面的例子,在按钮点击时候立即执行钩子函数。而看下面的例子:

btn.addEventListener("click",() =>{
    console.log(this.onclick);//undefined
});

给btn绑定了一个监听器,只有消息捕获完成之后才能触发回调函数。

很明显的差别就是:钩子函数在捕获消息的第一时间就执行,而回调函数是捕获结束时,最后一个被执行的。

回调函数其实是调用者将回调函数的指针传递给了调用函数,当调用函数执行完毕后,通过函数指针来调用回调函数。而钩子函数在消息刚发出,没到达目的窗口前就先捕获了该消息,先得到控制权执行钩子函数,所以他可以加工改变该消息,当然也可以不作为,还可以强行结束该消息。

【完】

对于无知的人,你需要的不是说服他,而是要远离他。

原文地址:https://www.cnblogs.com/tangjiao/p/10007707.html

时间: 2024-11-15 04:01:17

钩子函数和回调函数的区别的相关文章

普通函数与回调函数的区别

普通函数与回调函数的区别:对普通函数的调用:调用程序发出对普通函数的调用后,程序执行立即转向被调用函数执行,直到被调用函数执行完毕后,再返回调用程序继续执行.从发出调用的程序的角度看,这个过程为“调用-->等待被调用函数执行完毕-->继续执行” 对回调函数调用:调用程序发出对回调函数的调用后,不等函数执行完毕,立即返回并继续执行.这样,调用程序执和被调用函数同时在执行.当被调函数执行完毕后,被调函数会反过来调用某个事先指定函数,以通知调用程序:函数调用结束.这个过程称为回调(Callback)

Java/Android中的函数调用&回调函数&自定义回调函数

在做Android自定义控件时遇到要自定义回调函数的问题,想想自己还暂时没有那么精深的技术,赶紧返过头回来再重新研究Java中回调函数的问题.然而不幸的是,网上太多杂乱的帖子和博客都是转来转去,而且都是那一篇"C中的回调函数.....指针.....java....",一点看不出来是自己的思路,估计都是哪哪哪抄来的!(呵呵,要么就是吐槽对了,要么就是我水平太烂读不懂还妄加评论)还有一些很不错的文章,我会在最后参考中加上链接,大家可以看看. 那么来开始我们的正题--什么是回调函数? 我们一

C++中类成员函数作为回调函数

注:与tr1::function对象结合使用,能获得更好的效果,详情见http://blog.csdn.net/this_capslock/article/details/38564719 回调函数是基于C编程的Windows SDK的技术,不是针对C++的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过. 普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递一个指向自身的指针给其成员函数从

c语言(函数指针,回调函数)

//  main.m //  1-28随堂笔记 //讲师: 小辉 //笔者: 王学文 //  Created by lanouhn on 15/1/28. //  Copyright (c) 2015年 lanouhn. All rights reserved. // 函数指针, 回调函数 #import <Foundation/Foundation.h> struct student { char name[20]; float score; int age; }; typedef stru

钩子函数 和回调函数

http://blog.csdn.net/lipeionline/article/details/6369657  转自 也可以这样,更容易理解:回调函数就好像是一个中断处理函数,系统在符合你设定的条件时自动调用.为此,你需要做三件事: 1.       声明: 2.       定义: 3.       设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数,以便于系统调用. 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统.每当特定的消息发出,在没有到达目的窗口前

新手,对函数,函数指针,回调函数, 函数指针作为函数的返回值和block的一些见解

很多初学者,学c语言时,看到函数都觉得难,我也是,一开始觉得函数太难了,后来慢慢就理解了 第一:函数 在c语言中最简单的函数一般有四种: 1, 无返回值, 无参数. 2, 无返回值,有参数. 3, 有返回值,无参数. 4, 有返回值,有参数 1, 无返无参  定义方式:      void 函数名(); 一般不怎么用这种形式的函数,可用来输出,打印 void functionOne() { printf("无返回值,无参数"); // 没有返回值不能写return } int main

【笔记】关于jq $.ajax 函数 success回调函数不能赋正确值或返回正确值的问题

最近在一个项目里面打算实现如下功能: 当我注册账号的时候当输入账号完毕后输入框失焦时执行一个 ajax 请求,验证账号是否被注册,并未这个输入框的 isCorrect属性赋值,如果没有被注册 isCorrect属性值为"true",否则为 "false".代码如下: ajax: function(obj){ /* { elem: //验证的元素, hintsContent: //提示框元素, errorColor: //错误时显示的颜色, url: //后台处理页地

JavaScript匿名函数和回调函数

格式: (function(){ //代码 })(); 函数表达式可以存储在变量中,变量也可以作为一个函数使用 可以将匿名函数作为参数传递给其它函数,接收方函数就可以通过所传递进来的函数完成某些功能 可以通过匿名函数来执行某些一次性的任务 <!doctype html> <html> <head> <meta charset="utf-8"/> <title></title> </head> <b

函数指针和指针函数和回调函数以及函数指针数组

1.首先来说,函数指针 就是函数的指针 2.指针函数,就是指针的函数.也就是返回值是个指针 一.指针 [1]指针  1--- 指针变量:用于存放地址量的变量  2--- 地址常量   int a = 20:   int *p = &a: [2]运算符  1--- &  2--- *(指针解引用):通过地址获取其内容  3--- []:只针对于指针运算.指针加单位长度,后取*运算. 二.函数 [1]指针函数 [2]函数指针 [3]函数指针数组  本质:数组,由多个元素组成  元素:函数指针类