广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >JavaScript钩子机制原理是什么
  • 696
分享到

JavaScript钩子机制原理是什么

2024-04-02 19:04:59 696人浏览 独家记忆
摘要

这篇文章主要讲解了“javascript钩子机制原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript钩子机制原理是什么”吧!问题是这

这篇文章主要讲解了“javascript钩子机制原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript钩子机制原理是什么”吧!

问题

是这样的:我们的代码已经历史很久了,就这一套框架已经快5年了,在这中间大家也没有标准的代码规范,很随意的进行了代码编写,所以出现了很多问题:

1、如制造了很多重复的轮子。一套方法在多个文件中出现,大家调用的也五花八门,所以同事在一个方法(登录)中添加逻辑的时候发现,多个地方都有这样登录操作,修改起来非常麻烦。

2、代码结构混乱,分工不明确,本来公共类做的事情,导航类也做了类似的操作。

3、回调函数的使用,出现多个回调函数,从而出现一个回调函数会覆盖前一个回调函数的情况。

前两个问题,我首先把所有的入口文件(调用登录的方法)统一使用公共类中的方法,并且是一个入口一个入口的进行验证,保证代码的安全性、稳定性。并且不删除原有的方法,害怕有遗漏。然后计划是一个月之后,再进行一次全站搜索看是否有人还使用其他接口,然后删除那些重复的方法。

JavaScript钩子机制原理是什么

下面主要讨论第三个问题的解决方法。

委托方法

我们讨论过使用委托方法,把所有的回调函数注册到一个数组变量中,然后集中处理数组变量中的函数,这样就不会出现后面的函数冲击前面的函数问题。——因为原来回调函数就一个。

JavaScript钩子机制原理是什么

下面是具体的代码过程

JavaScript钩子机制原理是什么定义全局变量

<head>         <script type="text/javascript">                var calls = [];       </script>  </head>

JavaScript钩子机制原理是什么注册方法

function need_reGISter(){  }  function test(){        calls.push('need_register');  }

 JavaScript钩子机制原理是什么最终执行注册代码 

function callback(){       var calls = calls || [];       if(calls.length === 0) return false;       for(var i=0, iLen = calls.length; i < iLen; i++){               calls[i].apply();        }  }

问题:

1、我们不难发现我们必须要有全局变量calls,我们知道全局变量不管在什么语种中都是最难维护的,因为到处都有可能修改里面的值,或改变整个全局变量。

2、在注册时候我们会在多个地方在calls中注册"函数名称",将来如果其他开发人员,看见这个变量会一头雾水的。&mdash;&mdash;东一榔头,西一棒子。

总结:所以最终我们决定放弃这个方法。想出了下面的方法,我们管它叫钩子机制,也许名称上有点不够直观,呵呵大家就权当学习整个方法吧。

钩子机制

钩子机制是这样的,大家按照某一规则写一个方法(这个规则在方法名称上),然后页面加载完之前,统一执行所有的钩子函数。

JavaScript钩子机制原理是什么

注意callHooks方法,里面的局部变量s就是钩子函数名称中一定要有的内容。&mdash;&mdash;这是使用钩子的方法!

// 处理钩子的对象  var hook = (function(){      return {          timer:null,          init:function(){              this.callHooks('init');          },            callHooks:function(init){              var s = "hook_" + init + '_event',              f = [];               for(var h in window){                  if(h.indexOf(s) != 0) continue;                  f.push(h);              }                 this.hooksTimeout(f);          },            hooksTimeout:function(hooks){              if(0 === hooks.length){                  if(this.timer) clearTimeout(this.timer);                  return;              }                  var h = hooks.shift();              window[h].apply();              window[h] = undefined;               window.setTimeout(this.hooksTimeout(hooks), 200);          }         }     }());   // 钩子1  var hook_init_event_tpl_html = function(){      document.getElementById('test').innerHTML = 'This is HTML!';  }   // 钩子2  var hook_init_event_tpl_console = function(){      console.log('This is console!');  }   // ***在页面加载完之前调用,也就是在window.onload()之前  hook.init();

感谢各位的阅读,以上就是“JavaScript钩子机制原理是什么”的内容了,经过本文的学习后,相信大家对JavaScript钩子机制原理是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: JavaScript钩子机制原理是什么

本文链接: https://www.lsjlt.com/news/78306.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript钩子机制原理是什么
    这篇文章主要讲解了“JavaScript钩子机制原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript钩子机制原理是什么”吧!问题是这...
    99+
    2022-10-19
  • thinkphp插件钩子的实现机制是什么
    这篇文章主要介绍“thinkphp插件钩子的实现机制是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“thinkphp插件钩子的实现机制是什么”文章能帮助大家解决问题。现在主流的cms或者blog...
    99+
    2023-07-05
  • JavaScript运行机制及原理是什么
    这篇文章主要介绍“JavaScript运行机制及原理是什么”,在日常操作中,相信很多人在JavaScript运行机制及原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-10-19
  • JavaScript内存回收机制的原理是什么
    这期内容当中小编将会给大家带来有关JavaScript内存回收机制的原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.用局部变量和全局变量解释GCGC在回收内存...
    99+
    2022-10-19
  • Javascript继承机制的设计原理是什么
    这篇文章主要讲解了“Javascript继承机制的设计原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Javascript继承机制的设计原理是什么”...
    99+
    2022-10-19
  • JavaScript中内存回收机制的原理是什么
    本篇文章为大家展示了JavaScript中内存回收机制的原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。JavaScript语言是一门优秀的脚本语言.其中包...
    99+
    2022-10-19
  • android binder机制原理是什么
    Android Binder机制是Android系统中用于进程间通信(IPC)的核心机制,它基于进程间通信的原理,实现了高效、安全、...
    99+
    2023-09-20
    android
  • MySQL锁机制原理是什么
    这篇文章主要介绍“MySQL锁机制原理是什么”,在日常操作中,相信很多人在MySQL锁机制原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL锁机制原理是什么”...
    99+
    2022-10-18
  • Android中Binder机制原理是什么
    Binder机制是Android系统中的一种进程间通信(IPC)机制,用于实现不同进程间的数据交互和方法调用。Binder机制的原理...
    99+
    2023-09-14
    Android
  • jwt的token机制原理是什么
    JWT(JSON Web Token)是一种用于身份验证和授权的开放标准(RFC 7519),它是一种轻量级的无状态身份验证机制,用...
    99+
    2023-10-07
    jwt
  • Android Adapter机制和原理是什么
    Android Adapter机制是一种将数据与视图之间进行绑定的机制,用于在Android应用中将数据呈现给用户。Adapter负...
    99+
    2023-09-26
    Android
  • android Handler机制的原理是什么
    Android中的Handler机制是用来实现线程之间的通信的一种机制。它的原理是基于消息队列和消息循环。每个线程都有自己的消息队列...
    99+
    2023-09-20
    android
  • java反射机制原理是什么
    Java反射机制是指在运行时动态获取类的信息并操作类的属性和方法的能力。它允许程序在运行时通过类的全限定名来获取类的实例,调用类的构...
    99+
    2023-08-30
    java
  • Java RMI机制的原理是什么
    本篇内容主要讲解“Java RMI机制的原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java RMI机制的原理是什么”吧!Java RMIJava RMI之HelloWorld篇Ja...
    99+
    2023-06-20
  • Hibernate flush机制的原理是什么
    本篇内容介绍了“Hibernate flush机制的原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!针对昨天同事遇到的hiberna...
    99+
    2023-06-17
  • MySQL中复制机制的原理是什么
    MySQL中复制机制的原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。背景介绍复制,就是对数据的完整拷贝,说到为什么要...
    99+
    2022-10-18
  • java异常处理机制原理是什么
    Java异常处理机制的原理是基于异常(Exception)的概念。在Java中,异常是指在程序运行过程中发生的错误或异常情况。当代码...
    99+
    2023-09-16
    java
  • SQLite原子提交的原理是什么
    这篇文章给大家介绍SQLite原子提交的原理是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.0 简介“原子提交”是SQLite这种支持事务的数据库的一个重要特性。原子提交意味着...
    99+
    2022-10-18
  • Mysql中MVCC机制的原理是什么
    这篇文章将为大家详细讲解有关Mysql中MVCC机制的原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Mysql的锁和事务隔离级别在理解MVCC机制的原理之前,需要先理解Mysql的...
    99+
    2023-06-14
  • java arraylist扩容机制原理是什么
    Java中的ArrayList是基于数组实现的动态数组,其扩容机制的原理如下:1. 初始容量:当创建一个ArrayList对象时,会...
    99+
    2023-10-19
    java arraylist
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作