-
1、解决命名空间与变量污染的问题 2、立即调用表达式查看全部
-
1、jQuery按我的理解分为五大块,选择器、DOM操作、事件、AJAX与动画 2、单一职责SRP 3、解耦 4、异步队列模块(Deferred)与回调模块(Callbacks) 5、jQXHR对象查看全部
-
http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html 所以我们需要设计一个返回后触发处理的机制,当然原生的JavaScript对这个机制几乎是没有的。为了优化这个形成统一的异步处理方案,jQuery就开始设计了一个Deferred异步模型。 所以说,Deferred的引入,为处理事件回调提供了更加强大并且更灵活的编程模型。 Deferred 提供了一个抽象的非阻塞的解决方案(如异步请求的响应),它创建一个promise对象,其目的是在未来某个时间点返回一个响应。简单来说就是一个异步/同步回调函数的处理方案。查看全部
-
我们常见的异步操作: 定时器setTimeout postmessage WebWorkor CSS3 动画 XMLHttpRequest HTML5的本地数据 等等…查看全部
-
函数aQuery()内部首先保证了必须是通过new操作符构建。意义重大...如上结构就可以模拟出jQuery的这样的操作了,即可通过索引取值,也可以链式方法取值...但存在缺陷 exec() 方法在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null。 返回值 如果匹配成功,exec() 方法返回一个数组,并更新正则表达式对象的属性(lastIndex)。返回的数组将完全匹配成功的文本作为第一项,将正则括号(捕获)里匹配成功的作为数组填充到后面。如果匹配失败,exec() 方法返回 null。查看全部
-
window和undefined都是为了减少变量查找所经过的scope作用域。查看全部
-
1、两个DOM对象肯定是相等的,两个jquery对象一定是不等的! 2、静态方法:uid绑定在jquery对象上,不同jquery对象不会覆盖 实例方法:uid绑定在DOM对象上,相同DOM对象会覆盖查看全部
-
Data类的设计: 1.jQuery本身就是包装后的数组结构,这个不需要解析了; 2.通过data存储数据: 为了不把数据与dom直接关联,所以会把数据存储到一个cache对象上 产生一个 unlock = Data.uid++; unlock 标记号 把unlock标记号,作为一个属性值 赋予$body节点 cache缓存对象中开辟一个新的空间用于存储foo数据,this.cache[ unlock ] = {}; 最后把foo数据挂到cache上,cache[ data ] = value; 3.通过data获取数据 从$body节点中获取到unlock标记 通过unlock在cache中取到对应的数据查看全部
-
数据缓存,jQuery现在支持两种: 1. dom元素,数据存储在jQuery.cache中。 2. 普通js对象,数据存储在该对象中。 var data_priv = new Data(); var data_user = new Data(); 一个是给jQuery内部使用,比如数据对象,queue,Deferred,事件,动画缓存。 另一个对象data_user是提供给开发者使用的,比如$.attr(),$.data等等。查看全部
-
简单的来说: 1.jQuery.data()可以实现为dom元素或js对象添加缓存 2.$("ele").data()是对前者的扩展,其目的是可以方便的通过选择器为多个dom元素添加缓存数据 虽然大体的意思一样,但是2个接口在处理上却有差别,也是我们容易忽视的查看全部
-
对于jQuery来说,数据缓存系统本来就是为事件系统服务而分化出来的,到后来,它的事件克隆乃至后来的动画列队实现数据的存储都是离不开缓存系统,所以数据缓存也算是jQuery的一个核心基础了。 好处: A.允许我们在DOM元素上附加任意类型的数据,避免了循环引用的内存泄漏风险 B.用于存储跟dom节点相关的数据,包括事件,动画等 C.一种低耦合的方式让DOM和缓存数据能够联系起来 jQuery的数据缓存接口: jQuery.data( element, key, value ) $(ele).data( ) 在jQuery的官方文档中,提示用户这jQuery.data()是一个低级的方法,应该用$(ele).data()方法来代替。$.data( element, key, value )可以对DOM元素附加任何类型的数据,但避免了循环引用导致的内存泄漏问题。 二者都是用来在元素上存放数据也就平时所说的数据缓存,都返回jQuery对象,但是内部的处理确有本质的区别。查看全部
-
(1): DOM对象: DOM 是 Document Object Model(文档对象模型)的缩写,用传统的方法(javascript)获得的eg.getElementById()...。 javascript对象: 是javascript中除了Document Object的其余对象。 jQuery对象: 即是用jQuery类库的选择器获得的对象; (2): 内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。 而另外一种情况,就是循环引用,一个DOM对象和JS对象之间互相引用,这样造成的情况更严重一些,即使刷新,内存也不会减少。这就是严格意义上说的内存泄露了。 所以在平时实际应用中, 我们经常需要给元素缓存一些数据,并且这些数据往往和DOM元素紧密相关。由于DOM元素(节点)也是对象, 所以我们可以直接扩展DOM元素的属性,但是如果给DOM元素添加自定义的属性和过多的数据可能会引起内存泄漏,所以应该要尽量避免这样做。 因此更好的解决方法是使用一种低耦合的方式让DOM和缓存数据能够联系起来。 所以我们必须有一种机制,避免引用数据直接依附在DOM对象上,这样尽量避免内存泄漏的产生。jQuery的缓存系统就很好的解决了这一问题(即内存泄漏这个问题)。查看全部
-
stopOnFalse的逻辑处理在这里: for (; list && firingIndex < firingLength; firingIndex++) { if (list[firingIndex](data) === false && options === 'stopOnFalse') { break; } }查看全部
-
if (options == 'unique') { if (-1 === list.indexOf(fn)) { // 数组也有indexOf(),不存在时为-1,否则为索引 list.push(fn) } }查看全部
-
我们在执行cbs.add(fn2);时,除了把fn2添加到了回调队列还立刻执行了这个方法,参数是用的之前的。查看全部
举报
0/150
提交
取消