zoukankan      html  css  js  c++  java
  • 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];
    };
  • 相关阅读:
    Protobuf
    iOS保持App真后台运行
    oc之考试答题类效果
    oc之脚本
    IOS
    Xcode中控制台中打印中文处理
    iOS-拍照后裁剪,不可拖动照片的问题
    iOS开发之一句代码检测APP版本的更新
    AVAudioSesion和AVAudioPlayer的基本使用
    GCD使用dispatch_semaphore_t创建多线程网络同步请求
  • 原文地址:https://www.cnblogs.com/adullboy/p/3292636.html
Copyright © 2011-2022 走看看