jquery保存数据 源码_第1页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、jquery保存数据 源码jquery.data的是jquery的数据缓存系统。它的主要作用就是为一般对象或者dom元素添加数据。这个原理很容易,原本要添加在dom元素本身的数据,现在被集中的存储在cache集合中。它们之间靠一个从1开头的数字键来联系着。这样dom元素就不会像以前那么粗笨了,更不会浮现以前那种循环引用而引起的内存泄漏。现在dom只需要保存好这个数字键值即可。这个属性值被保存在dom元素的一个属性里,该属性名是由jquery.expando生成的。首先来看object.defineproperty函数,它的作用为:将属性添加到对象,或修改现有属性的特性。那我们先来看下ecmas

2、cript5中的属性。ecmascript5中有两种属性:数据属性和拜访器属性。数据属性包含一个数据值的位置,在这个位置可以读取和写入值。有4种特性用来限制其行为。configurable能否通过delete删除属性,能否修改属性的特性,能否把属性改为拜访器属性。默认为true。注重,一旦将 configurable 设为false,就再也设置不回去了。而且还会报错。enumerable在for-in循环是否能猎取到属性。默认为true。ecmascript规定,由程序员定义的属性的该特性都为true。writable能否修改属性的值。默认为true。value属性值所在的地方。读取属性值的时

3、候猎取的就是它,写属性值的时候也是往这里写。拜访器属性不包含实际的属性值,它包含两个函数(getter和setter)get读取属性时调用的函数。默认为undefinedset写入属性时调用的函数。默认为undefined上面给cache的属性0,只给了get属性。所以不能为该属性赋值。只能猎取。这个expando就是用来为dom元素或者对象存储在cache中的键的。即它将作为dom元素的一个属性被存储这。红色画框内的属性名就是由上面的语句生成的,指明div1的属性存储在cache的1属性中。该属性表示cache的属性将从1开头自增。由于0已经被这个冻结的空json占用了,所以从1开头。我们下

4、次再为某dom元素添加属性时,它将被保存在cache的2属性中。这段代码写的十分干练。表示假如owner是dom元素则惟独element_node和document_node两种元素能添加属性,假如owner是一个对象,则都可以添加属性。假如owner不能被添加data,则返回cache的第0个元素。这里猎取的就是假如能从owner中找到这个属性,则解释以前为它添加过值,也就是说,它已经拥有了一个在cache中的key。假如找不到,则解释是第一次为owner添加属性,则要创建一个key。这个key就是在data的uid的基础上加1.data的uid是一个静态属性。这样就能记录前一个元素的key

5、是多少,这次的key又应当是多少。try块里面为owner(即dom元素或者对象)添加它在cache中的索引。这里会浮现兼容性的问题。在android系统<4时会浮现平安问题,因此jquery用法extend静态办法将descriptor扩展到owner上面。这里为owner对应在cache中的key赋值一个object。这个的key办法的作用就是为dom元素创建属性,为cache中对应的key赋值(空对象)。key返回的是这个unlock,即owner对象在cache中对应的key。第一句不用说明,其次句或者cachekey值。以上图所示,则这里的cache目前还是,由于在此之前还没有

6、为div1添加过属性。我们下面的代码走的就是这里:但是我们有无数属性要设置的时候,jquery的处理方式是这样的:其实这里个人以为不用再推断了,由于extend里面也是用for循环将data的属性扩展到cache中的。猎取属性,代码十分容易。假如key不存在则返回cache对象。这里对get和set办法的统一拜访。猎取owner的在cache中的数据对象,this.key返回的是owner在cache中的key。假如不指定要删除那个属性的话,jquery会删除owner全部的数据属性。否则再推断key是不是数组,是数组的话,将key数组和用key的每一项转驼峰后的数组合并,即:经过上面的代码,

7、key为变为&quot;one_key&quot;,&quot;two_key&quot;,&quot;onekey&quot;,&quot;twokey&quot;。后面会将这4个属性都删除掉。那假如key不是数组:同样先输转驼峰,然后推断key是否存在,不存在则推断key的驼峰形式是否存在,后面的正则表达式用于去除驼峰形式前后的空格。当这些状况过滤完之后,举行删除操作:在while循环里面用法delete举行删除。cache中是否拥有woner的数据对象。删除cache中的woner的数据对象。所以,我们在jquery的外面不

8、能挺直拿到这个cache。由于它是jquery的局部变量。data_user供开发人员用法,data_priv供jquery内部用法。因为data构造器是jquery私有的,我们在外面不能拜访到,所以前面的那些办法,我们也不能挺直拜访,jquery在这里,给我们提供了一些接口。来操作data_user,为dom元素和object举行属性操作。工具办法十分容易只是对data_user办法的封装而已。我们主要看下原型办法。设值和取值都会进入上面的办法。这里有这样一个思想,假如是设值的时候,则给选集中全部的选项设值,假如猎取值的时候,只猎取第一个选项的值。在第3行,已经取到cache中elem对应的属性了,下面jquery由将elem的attributes里的全部属性添加到elem的? 。hasdataattrs属性是我们自己添加,由于下面这段代码只需要执行一次即可。代码第6行,猎取elem全部的属性;这个namednodemap类型,我们平常很少挺直用它,它和nodelist,htmlcollection一样都是动态的。namednodemap集合中的每一项都是attr类型,attr对象有3个属性:name,value和spec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论