jquery源码学习——data(1)

网上烂多大jquery源码笔记,不过都不适合自己,想要了解还是自己去看吧。准备先从jquery数据存储开始,jquery里面的东西几乎都依赖data这个函数。事先声明,我这是看到哪里写到哪里,只是个人笔记而已。

1.先判断是否是dom对象,如果是dom对象,那么直接用jquery.cache做缓存,如果是js对象,那么直接存储在js对象里面,大家可以找一个用jquery的网站,然后在控制台输入$.cache,看看都存了啥。

2.为相应对象赋值一个唯一的id。每个js对象的id都是一样的(jQuery.expando)。每个dom的id都是不一样的,因为他们用的是相同的cach

3.data也可以存储js对象,比如var a = {'a':1};$.data(a,{'name':'duck'});这等价于$.data(a,'name','duck');

实现的小小的例子,直接放在控制台下运行,像jquery的data方法那样去调用

var gobalcache = {};
var expando = 'test' + Math.random();
var uuid = 1;

var data = function(element, key, value) {
    var isNode = element.nodeType;
    var cache = null;
    var id = null;
    if (isNode) {
        cache = gobalcache;
        id = element[expando] ? element[expando] : uuid++
        element[expando] = id;
    } else {
        cache = element;
        id = expando;
    }
    if (!cache[id]) {
        cache[id] = {
            data: {}
        };
    }
    if(value !== undefined){
        cache[id].data[key] = value;
    }
    return cache[id].data[key];
};
原文地址:https://www.cnblogs.com/adullboy/p/3292636.html