美文网首页
对jq钩子机制的理解

对jq钩子机制的理解

作者: 李佳明先生 | 来源:发表于2017-09-28 18:27 被阅读0次

先看看jq的hook表驱动的实现:

(function(window, undefined) {
    var
        // 用于预存储一张类型表用于 hook
        class2type = {};
 
    // 原生的 typeof 方法并不能区分出一个变量它是 Array 、RegExp 等 object 类型,jQuery 为了扩展 typeof 的表达力,因此有了 $.type 方法
    // 针对一些特殊的对象(例如 null,Array,RegExp)也进行精准的类型判断
    // 运用了钩子机制,判断类型前,将常见类型打表,先存于一个 Hash 表 class2type 里边
    jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
        class2type["[object " + name + "]"] = name.toLowerCase();
    });
 
    jQuery.extend({
        // 确定JavaScript 对象的类型
        // 这个方法的关键之处在于 class2type[core_toString.call(obj)]
        // 可以使得 typeof obj 为 "object" 类型的得到更进一步的精确判断
        type: function(obj) {
 
            if (obj == null) {
                return String(obj);
            }
            // 利用事先存好的 hash 表 class2type 作精准判断
            // 这里因为 hook 的存在,省去了大量的 else if 判断
            return typeof obj === "object" || typeof obj === "function" ?
                class2type[core_toString.call(obj)] || "object" :
                typeof obj;
        }
    })
})(window);

代码转载于ChokCoco
某种程度上讲,钩子是一系列被设计为以你自己的代码来处理自定义值的回调函数。

相关文章

  • 对jq钩子机制的理解

    先看看jq的hook表驱动的实现: 代码转载于ChokCoco某种程度上讲,钩子是一系列被设计为以你自己的代码来处...

  • 事件钩子与指令标记

    事件钩子 对于事件钩子,我不成熟的理解是在Vue中封装的事件响应机制。 在Vue中,有11个事件钩子,分别对应着V...

  • 钩子的应用和生命周期的实现

    钩子(hook) 钩子的概念源于Windows的消息处理机制,通过设置钩子,应用程序可以对所有的消息事件进行拦截,...

  • React

    钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问...

  • JS中的hook机制

    hook机制也就是钩子机制,由表驱动实现,常用来处理多种特殊情况的处理。我们预定义了一些钩子,在常用的代码逻辑中去...

  • 对Promise机制的理解

    Promise是一套解决编程中异步操作问题的方案。所谓Promise对象,其实就像一个容器,包裹着一个未来才会发生...

  • 对Handler机制的理解

    对Handler机制的理解 前言 Handeler机制算是Android中一个比较核心的内容了,本文是经过对Han...

  • 初探Vue实例的生命周期

    Vue实例的生命周期简单地理解为8个钩子函数 Vue实例对每个钩子函数的调用时机如下 beforeCreate 在...

  • 面试积累之框架(五)

    谈谈你对AOP的理解: 谈谈对sprin的理解 SpringMVC的工作机制

  • 前端跳槽面试必备技巧

    1、jq的核心架构是什么?事件委托是怎么做的?插件机制是什么?---jq的博客总结 2、vue源码--网上源码分析...

网友评论

      本文标题:对jq钩子机制的理解

      本文链接:https://www.haomeiwen.com/subject/mosvextx.html