【JavaScript】------- JavaScript 钩子机制(hook)

亦凉 2021-11-15 11:38 611阅读 0赞
  1. 在 jQuery 2.0.0 之前的版本,对兼容性做了大量的处理,正是这样才让广大开发人员能够忽略不同浏览器的不同特性的专注于业务本身的逻辑。而其中,钩子机制在浏览器兼容方面起了十分巨大的作用。

钩子是编程惯用的一种手法,用来解决一种或多种特殊情况的处理。

简单来说,钩子就是适配器原理,或者说是表驱动原理,我们预先定义了一些钩子,在正常的代码逻辑中使用钩子去适配一些特殊的属性,样式或事件,这样可以让我们少写很多 else if 语句。

如果还是很难懂,看一个简单的例子,举例说明 hook 到底如何使用:

现在考公务员,要么靠实力,要么靠关系,但领导肯定也不会弄的那么明显,一般都是暗箱操作,这个场景用钩子实现再合理不过了。

  1. // relationHook 是个钩子函数,用于得到关系得分
  2. var relationHook = {
  3. "xijing": 1000,
  4. "ligang": 100,
  5. "pengde": 50,
  6.    // 新的考生只需要在钩子里添加关系分
  7. }
  8. // 考生分数以及父亲名
  9. function examinee(name, score, fatherName) {
  10. return {
  11. name: name,
  12. score: score,
  13. fatherName: fatherName
  14. };
  15. }
  16. // 审阅考生们
  17. function judge(examinees) {
  18. var result = {};
  19. for (var i in examinees) {
  20. var curExaminee = examinees[i];
  21. var ret = curExaminee.score;
  22. if (relationHook[curExaminee.fatherName] ) {
  23. ret += relationHook[curExaminee.fatherName] ;
  24. }
  25. result[curExaminee.name] = ret;
  26. }
  27. return result;
  28. }
  29. var lihao = examinee("lihao", 10, 'ligang');
  30. var xida = examinee('xida', 8, 'xijing');
  31. var peng = examinee('peng', 60, 'pengde');
  32. var liaoxiaofeng = examinee('liaoxiaofeng', 100, 'liaodaniu');
  33. var result = judge([lihao, xida, peng, liaoxiaofeng]);
  34. // 根据分数选取前三名
  35. for (var name in result) {
  36. console.log("name:" + name);
  37. console.log("score:" + score);
  38. }

可以看到,使用钩子去处理特殊情况,可以让代码的逻辑更加清晰,省去大量的条件判断,上面的钩子机制的实现方式,采用的就是表驱动方式,就是我们事先预定好一张表(俗称打表),用这张表去适配特殊情况。当然 jQuery 的 hook 是一种更为抽象的概念,在不同场景可以用不同方式实现。

发表评论

表情:
评论列表 (有 0 条评论,611人围观)

还没有评论,来说两句吧...

相关阅读

    相关 svn钩子hooks)。

    首先你需要搭建出自己的svn环境出来,并能成功导入导出,并且了解svn,这是看这篇文章的前提.... 出于公司开发部需要svn同步更新服务器代码,需要用到svn钩子(hook

    相关 用过php的钩子hook)?

    钩子定义 钩子是编程里一个常见概念,非常的重要。它使得系统变得非常容易拓展,(而不用理解其内部的实现机理,这样可以减少很多工作量)。   钩子作用 钩子函数可以截获并

    相关 Javascript继承机制

    一直想对Javascript再次做一些总结,正好最近自己写了一个小型JsUI库,总结了一下Js的继承机制,在网上也看了一些前辈们博客里的总结,感觉分析不是特别全面。这里仅仅是把

    相关 JavaScript 执行机制

      不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定的几行代码,我们需要知道其输出内容和顺序。因为javascrip

    相关 HOOK钩子详细介绍

    基本概念 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监 视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,