zoukankan      html  css  js  c++  java
  • 钩子函数和回调函数的区别

    1.钩子函数与回调函数都是事件处理函数

    2.钩子函数是指windows的消息处理机制下,捕获消息的时候立即执行

    3.回调函数并不能参与消息处理的过程,所以,它是在消息捕获结束后才执行的函数

    钩子函数实例:

    $('button').click(()=>{
    console.log('我被点击了!')
    })

     回调函数实例:

    $("p").on("click", function(){
    alert( $(this).text() );
    })
    

      进一步理解
        回调函数可以理解类中断处理函数,以指针的形式传入,在条件满足时自动执行。钩子函数是特殊的回调函数,如果有钩子函数时,钩子函数先得到控制权。

        通过钩子函数,可以对消息事件进行拦截,满足条件,执行钩子含糊是,对消息进行想要的处理方式。这与运行时间长短没有关系,钩子函数可能不执行。

        再进一步说钩子函数就是一种过滤机制,满足就执行(挂钩),不满足就不执行。

       上边的理解是来源于导师的说法,我自己也私下做了测试,分别进行先后顺序的执行与钩子,回调并存嵌套执行做了处理,终于理解了上边话的意思,具体测试代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="node_modules/bootstrap/dist/js/jquery-3.2.1.min.js"></script>
        <script >
            $(function () {
                console.time("timer")
                /* $("button").click(() => {
                     console.log("回调函数测试")
                 })*/
     
                console.timeEnd("timer")
                console.time("timer2")
                /* $("button").on("click", () => {
                     console.log("钩子函数测试")
                 })*/
                document.getElementsByTagName("button")[0]
                    .addEventListener("click", () => {
                        alert("我是回调函数")
                        document.getElementsByTagName("button")[0]
                            .onclick = () => {
                            alert("我是钩子函数")
                        }
                    })
                console.timeEnd("timer2")
            })
        </script>
    </head>
    <body>
    <h1>对比一下</h1>
    <button>1222</button>
    </body>
     
    

      

    钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,

    在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。

    这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。  

    例子:

    木马钩子其实也是一个dll文件,这个东东讲起来比较麻烦。
    dll文件叫动态链接库文件,系统正常运行需要调用一些程序就是通过dll文件里的函数来执行的,一个正常运行的系统进程会调用许多的dll文件,而这些dll文件在系统用到某些功能时还会调用其它的dll文件。
    木马钩子就是这样一种dll文件,通过其内置的函数,使系统进程认为这个dll文件是个正常的需要调用的dll,然后再通过这个dll来启动木马。
    这就有点象使用钩子一样,先钩住挂靠再贴上去。

    参考链接:https://blog.csdn.net/qq_37469957/article/details/81515566

    声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/ 如出现转载未声明 将追究法律责任~谢谢合作
  • 相关阅读:
    UVA
    Codeforces 898F 字符串hash
    牛客练习赛11 B trie树+拓扑判环 E 分治求平面最近点对
    Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp
    2017-2018 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2017) D bfs思维 E bfs I Floyd找最小环 K 二分
    Educational Codeforces Round 37 E 补图求连通块 bfs+链表优化 F 线段树套路
    Codeforces 919E 数论,思维
    大数加法(主要是想记住模板)
    基础图论3
    简单并查集2hdu1213
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/14463638.html
Copyright © 2011-2022 走看看