zoukankan      html  css  js  c++  java
  • jQuery缓存机制(一)

    1、首先看一下涉及到jQuery缓存机制的代码结构:

    // 定义一些jQuery内部的变量,方便后续使用

    var data_user, data_priv, // 后续会被赋值为两个Data对象
      rbrace = /(?:{[sS]*}|[[sS]*])$/,  // 匹配花括号和方括号及其中间的内容
      rmultiDash = /([A-Z])/g;//匹配大写字母

    // 定义Data的构造函数

    function Data() {}

    // 为Data构造函数添加一个uid属性

    Data.uid = 1;

    // 哪些类型的对象可以使用Data存储数据的:元素节点、文档节点、Object
    Data.accepts = function( owner ) {};

    // 为Data构造函数绑定方法

    Data.prototype = {
      key: function( owner ) {}, // 生成一个key唯一的key,这个key是通过jQuery的唯一id加上一个随机数产生的

      set: function( owner, data, value ) {}, // 向cache中写数据

      get: function( owner, key ) {}, // 从cache中拿数据
      access: function( owner, key, value ) {}, // 一个set和get的总入口?处理一些特殊情况?暂时不太了解

      remove: function( owner, key ) {}, // 从cache中删除数据

      hasData: function( owner ) {}, // 检查owner(DOM||object)上是否有数据
      discard: function( owner ) {} // 清除owner上的所有数据
    };

    // 内部实例化的两个Data对象。分工不同

    // 使用第一个Data对象存取数据
    data_user = new Data();
    // 当所要存储数据的对象是DOM对象时,用来存储该对象是否设置了hasDataAttrs,仅限内部使用
    data_priv = new Data();

    // 为用户提供的使用$.的方式调用的接口
    jQuery.extend({
      acceptData: Data.accepts, // 标记哪些元素或者对象可以使用该Data存取数据

      hasData: function( elem ) {}, // 是否有数据

      data: function( elem, name, data ) {}, // 存取数据

      removeData: function( elem, name ) {}, // 删除数据

      _data: function( elem, name, data ) {}, // 存取数据(内部使用)

      _removeData: function( elem, name ) {}, // 删除数据(内部使用)
    });

    // jQuery提供给用户的使用$(Obj).的方式使用的接口
    jQuery.fn.extend({
      data: function( key, value ) {}, // 存取数据

      removeData: function( key ) {} // 删除数据
    });

    // 一个jQuery的私有方法,不绑定到任何的对象里,因为很多地方用到吗?奇怪,为什么要用这种方式写到这里?

    function dataAttr( elem, key, data ) {}

    2、核心问题:

      a)两个实例化的Data对象分别有什么作用

      b)Data对象内部的cache中是以怎样的形式存取数据的

      c)元素、data对象、key、cache是怎么联系起来的

  • 相关阅读:
    IE6/IE7下:inline-block不兼容的问题
    ie6、ie7下overflow失效
    display:inline、block、inline-block三者之间的区别
    分割线用CSS样式做出来的效果
    jQuery实现鼠标点击div外的地方div隐藏消失的效果
    IE6下面的浮动问题
    [zabbix]zabbix分区表操作步骤
    [转载]系统管理:update-alternatives
    zabbix调优PPT
    mysql修改密码
  • 原文地址:https://www.cnblogs.com/charling/p/3479345.html
Copyright © 2011-2022 走看看