热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javascript–麻烦帮解释一下,什么叫“钩子”?

后端开发|php教程javascript,php后端开发-php教程麻烦帮解释一下什么叫“钩子”。一笔一画源码,ubuntu如何切换pid,python爬虫模块入门,phpisup

后端开发|php教程Javascript - 麻烦帮解释一下,什么叫“钩子”?
Javascript,php
后端开发-php教程
麻烦帮解释一下什么叫“钩子”。
一笔一画源码,ubuntu如何切换pid,python爬虫模块入门,php isupload,韶关谷歌seolzw
婚恋交友源码出售,ubuntu主系统CPU,tomcat响应时间配置,爬虫特征识别,php图片左右对齐,seo加油lzw
回复内容:
php自适应单页面源码,让人爱不释手的vscode,ubuntu修改内存,tomcat监控电话多少,爬虫和sorl,PHP文件怎么打开罐头,热门seo优化系统招商加盟lzw
麻烦帮解释一下什么叫“钩子”。

钩子呢,英文叫做Hook,翻译过来应该叫做鱼钩;
举个例子:
你在你的钥匙上弄一条线绑着,然后在线上面弄一个钩子,你可以把这个钥匙挂在衣架上,也可以把这个钥匙挂在你的窗帘上。嗯这个也许不够生动和形象,再来一个:
在这里,这个衣架就相当于一个钩子,这个钩子的作用可以把毛巾挂到那上面的挂钩上。

这里大概是这样的一个意思,在程序里来说就是你定义了一个小功能,可以在任何想用的地方挂上去。这个小功能利用钩子挂上去,比如评论列表展示,可以是一个钩子,在需要的地方挂上去。
这个东西和插件其实差不多,但是我觉得的话,插件的功能相对于钩子来说,更复杂,钩子的话,功能更单一更灵活。

所以,我觉得符合钩子思想的东西就是钩子,程序如此,生活中的东西也如此

不知道是否准确,一个具体化的说法叫回调函数。linux内核中就有很多这样的机制,底层用c语言的函数指针来调用函数,顶层将该指针指向某个函数,以此来达到解耦代码的目的

“钩子”是一种形象的叫法,在可一“放置”钩子的地方,我们叫其为“挂载点”

我个人对钩子的理解就是:在一个有序的步骤中的特殊位置(挂载点),插入自定义的内容。这就叫”钩子”。

在ThinkPHP中,有前置钩子和后置钩子,他们用来设置在增,删,改,查数据前后的自定义操作。

在CodeIgniter中,钩子更为的灵活,灵活有系统执行早起的钩子,也有系统执行之后的钩子。非常能满足开发者的极客思想。

我理解的钩子,是指在模板方法模式的父类算法框架中隔离容易变化部分的一种方式。
比如父类的算法框架init()中默认依次执行A操作——B操作——C操作,正常情况下它的大部分子类也都按照这个流程来执行,但如果有一个特定的子类,它不想执行B操作,那么我们可以在父类中封装一个钩子invokeB,默认为true,当且仅当它为true的时候执行B操作,然后再到子类中将继承的invokeB设置为false,这样调用该子类的init()的时候就会跳过B操作了。

我也来凑个热闹。我觉得钩子(hook)就是:

通常就是:一个库、一个框架、一个系统或一种语言,提供一个对外公开的接口,通过这个接口,用户能够影响库、框架、系统或程序的行为。

至于具体实现,那是千差万别的。举个例子就是有同学提到了:Java中的模板方法。

最直观的理解就是 你要访问某个帖子 然而这个帖子有权限验证 必须要登录会员才能访问 那么 这个权限验证的过程也可以称之为hook钩子 简单地说 以某个条件触发的行为 就是钩子

用Javascript举个栗子:
alert是js的原生函数对不对,我们想要改造alert函数,这个时候,oriAlert就是一个钩子函数。

var oriAlert = window.alert;window.alert = function(txt){ //改造函数 oriAlert(txt);}

推荐阅读
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • Android源码中的Builder模式及其作用
    本文主要解释了什么是Builder模式以及其作用,并结合Android源码来分析Builder模式的实现。Builder模式是将产品的设计、表示和构建进行分离,通过引入建造者角色,简化了构建复杂产品的流程,并且使得产品的构建可以灵活适应变化。使用Builder模式可以解决开发者需要关注产品表示和构建步骤的问题,并且当构建流程发生变化时,无需修改代码即可适配新的构建流程。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
author-avatar
嘟嘟仔2286768
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有