-
设计该模式背后的主要动力是促进形成松散耦合。在这种模式中,并不是一个对象调用另一个对象的方法,而是一个对象订阅另一个对象的特定活动并在状态改变后获得通知。订阅者也称为观察者,而被观察的对象称为发布者或主题。当发生了一个重要的事件时,发布者将会通知(调用)所有订阅者并且可能经常以事件对象的形式传递消息。查看全部
-
老师应该漏了方法,正常的得这样吧 var $$ = ajQuery = function(selector) { //把原型上的init作为构造器 return new ajQuery.fn.init( selector ); } ajQuery.fn = ajQuery.prototype = { name: 'aaron', init: function() { console.log(this) }, constructor: ajQuery } //下边代码不能少吧 ajQuery.prototype.init.prototype = ajQuery.prototype;查看全部
-
eq()的实现原理就是在上面代码中的把eq方法内部转成jQuery对象: eq: function( i ) { var len = this.length, j = +i + ( i < 0 ? len : 0 ); return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );查看全部
-
get方法--是通过检索匹配jQuery对象得到对应的DOM元素,如下代码实现: get: function(num) { return num != null ? // Return just the one element from the set (num < 0 ? this[num + this.length] : this[num]) : // Return all the elements in a clean array slice.call(this); }查看全部
-
eq返回的是一个jQuery对象,get返回的是一个DOM对象。查看全部
-
end方法就是回溯到上一个Dom合集,因此对于链式操作与优化,这个方法还是很有意义的。 源码实现 既然是回溯到上一个DOM合集,那么肯定end方法中返回的就是一个jQuery对象了,所以我们看源码其实就是返回prevObject对象了,如下代码: end: function() { return this.prevObject || this.constructor(null); }查看全部
-
通过new操作符构建一个对象,一般经过四步: A.创建一个新对象 B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象) C.执行构造函数中的代码 D.返回这个新对象查看全部
-
实例方法的实现 简单一句话 ajQuery.fn.init.prototype = ajQuery.fn 基于var ajQuery = function(selector) { return new ajQuery.fn.init(selector); }查看全部
-
通过new操作符构建一个对象,一般经过四步: A.创建一个新对象 B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象) C.执行构造函数中的代码 D.返回这个新对象 ajQuery.fn.init.prototype = ajQuery.fn;查看全部
-
首先我们看jQuery的入口都是统一的$, 通过传递参数的不同,实现了9种方法的重载: 1. jQuery([selector,[context]]) 2. jQuery(element) 3. jQuery(elementArray) 4. jQuery(object) 5. jQuery(jQuery object) 6. jQuery(html,[ownerDocument]) 7. jQuery(html,[attributes]) 8. jQuery() 9. jQuery(callback) 9种用法整体来说可以分三大块:选择器、dom的处理、dom加载。 换句话说jQuery就是为了获取DOM、操作DOM而存在的!所以为了更方便这些操作,让节点与实例对象通过一个桥梁给关联起来,jQuery内部就采用了一种叫“类数组对象”的方式作为存储结构,所以我们即可以像对象一样处理jQuery操作,也能像数组一样可以使用push、pop、shift、unshift、sort、each、map等类数组的方法操作jQuery对象了。查看全部
-
jQuery一共13个模块,从2.1版开始jQuery支持通过AMD模块划分,jQuery在最开始发布的1.0版本是很简单的,只有CSS选择符、事件处理和AJAX交互3大块。其发展过程中,有几次重要的变革: ☑ 1.2.3 版发布,引入数据缓存,解决循环引用与大数据保存的问题 ☑ 1.3 版发布,它使用了全新的选择符引擎Sizzle,在各个浏览器下全面超越其他同类型JavaScript框架的查询速度,程序库的性能也因此有了极大提升 ☑ 1.5 版发布,新增延缓对像(Deferred Objects),并用deferred重写了Ajax模块 ☑ 1.7 版发布,抽象出回调对象,提供了强大的的方式来管理回调函数列表。 每一次大的改进都引入了一些新的机制、新的特性,通过这些新的机制就造就了如今jQuery库,一共13个模块,模块不是单一的,比如jQuery动画,都会依赖异步队列、动画队列、回调队列与数据缓存模块等。 jQuery抽出了所有可复用的特性,分离出单一模块,通过组合的用法,不管在设计思路与实现手法上jQuery都是非常高明的。查看全部
-
9种用法整体来说可以分三大块:选择器、dom的处理、dom加载。 换句话说jQuery就是为了获取DOM、操作DOM而存在的!查看全部
-
基础运用, js, api, 数据结构, 观察者模式查看全部
-
$.noConflict()把$的控制权交给其他库查看全部
-
jQuery多库共存处理 多库共存换句话说可以叫无冲突处理。 总的来说会有2种情况会遇到: 1、$太火热,jQuery采用$作为命名空间,不免会与别的库框架或者插件相冲突。 2、jQuery版本更新太快,插件跟不上,导致不同版本对插件的支持度不一样。 出于以上的原因,jQuery给出了解决方案–– noConflict函数。 引入jQuery运行这个noConflict函数将变量$的控制权让给第一个实现它的那个库,确保jQuery不会与其他库的$对象发生冲突。 在运行这个函数后,就只能使用jQuery变量访问jQuery对象。例如,在要用到$("aaron")的地方,就必须换成jQuery("aaron"),因为$的控制权已经让出去了。查看全部
举报
0/150
提交
取消