美文网首页我爱编程
jQuery-v2.0.3源码浅析06-Data

jQuery-v2.0.3源码浅析06-Data

作者: 赠前端 | 来源:发表于2018-03-30 14:40 被阅读0次

    jQuery中的Data是用来存储某dom节点所对应的数据,以及事件。
    jQuery总共创建了两个Data实例,data_user和data_priv。其中data_user存储用户保存的一些数据,data_priv源码内部保存信息使用。

    1、expando 可以看成是随机数,做对象属性使用。
    2、uid 每个uid对应一个对象或者一个dom节点。
    3、如果传入一个对象或者一个dom节点,先判断是否包含expando属性,如果没有就创建一个。
    类似:

    { 'jQuery1212121212121': 1 }
    

    4、使用$().data(),可以获取到设置在元素身上的data-属性,是通过源码3538行进行实现的。

    源码

    /**源码3538行**/
    if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
        attrs = elem.attributes;
        for ( ; i < attrs.length; i++ ) {
            name = attrs[ i ].name;
    
            if ( name.indexOf( "data-" ) === 0 ) {
                name = jQuery.camelCase( name.slice(5) );
                dataAttr( elem, name, data[ name ] );
            }
        }
        data_priv.set( elem, "hasDataAttrs", true );
    }
    

    Data这块实现比较简单,大家可以通过源码进行查看。源码3308行-源码3652行

    相关文章

      网友评论

        本文标题:jQuery-v2.0.3源码浅析06-Data

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