- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
jQuery v2.1.4源码分析
jQuery源码分析源码结构(function (global, factory) { factory(global);}(typeof window !== undefined ? window : this, function (window, noGlobal) {var jQuery = function (selector, context) {returnnewjQuery.fn.init(selector, context); };// jQuery对象原型 jQuery.fn = jQtotype = { constructor: jQuery, init: function (selector, context, rootjQuery) {// selector有以下7种分支情况:// DOM元素// body(优化)// 字符串:HTML标签、HTML字符串、#id、选择器表达式// 函数(作为ready回调函数)// 最后返回伪数组 } };// Give the init function the jQuery prototype for later instantiationjQtotype = jQuery.fn;// 合并内容到第一个参数中,后续大部分功能都通过该函数扩展// 通过jQuery.fn.extend扩展的函数,大部分都会调用通过jQuery.extend扩展的同名函数 jQuery.extend = jQuery.fn.extend = function () { };// 在jQuery上扩展静态方法 jQuery.extend({// ready bindReady// isPlainObject isEmptyObject// parseJSON parseXML// globalEval// each makeArray inArray merge grep map// proxy// access// uaMatch// sub// browser });// 核心方法// 回调系统// 异步队列// 数据缓存// 队列操作// 选择器引// 属性操作// 节点遍历// 文档处理// 样式操作// 属性操作// 事件体系// AJAX交互// 动画引擎var// Map over jQuery in case of overwrite _jQuery = window.jQuery,// Map over the $ in case of overwrite _$ = window.$; jQuery.noConflict = function (deep) {if (window.$ === jQuery) { window.$ = _$; }if (deep window.jQuery === jQuery) { window.jQuery = _jQuery; }return jQuery; }; window.jQuery = window.$ = jQuery;return 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都是非常高明的。五大块:jQuery按我的理解分为五大块,选择器、DOM操作、事件、AJAX与动画,那么为什么有13个模块?因为jQuery的设计中最喜欢的做的一件事,就是抽出共同的特性使之“模块化”,当然也是更贴近S.O.L.I.D五大原则的“单一职责SRP”了,
文档评论(0)