- 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核心架构设计
这篇文章主要和大家谈一谈jQuery核心架构设计,什么是jQuery核心架构设计,多方面了解jQuery核心架构设计,感兴趣的小伙伴们可以参考一下 jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javascript中的高级特性来构建如此伟大的javascript库。 1 初识jQuery 从核心功能来看,jQuery仅仅做了一件简单而又平凡的事:查询。它的语法如此简洁明了,以致于很多人在不知道javascript是什么的时候就已经会用jQuery了,用一个词形容就是:大道至简。 从设计层面来看,我们可以将jQuery提供方法分为两大类:静态方法和实例方法。静态方法就是直接通过$访问的方法,这些方法一般不对dom元素操作,而是提供了一些常用的工具,比如ajax请求、以及对字符串的一些常用操作,除此之外,jQuery还提供了对自身的扩展机制,你可以通过extend方法来编写你需要的组件。而实例方法和静态方法不一样,它是用来对jQuery查询的DOM元素进行操作,jQuery执行$()会构建一个jQuery对象,这个对象以数组的方法存储查询出的所有DOM元素,然后在这个对象的原型链上实现了对这些DOM操作的方法,比如each()方法就是用来遍历每一个DOM元素的。你可能会注意到,我刚说这个对象“以数组的方式”存储,那就是说,jQuery构建的这个对象不是数组,那这个对象到底是什么? 其实这个对象就是jQuery的核心,也被称作“jQuery对象”。因此,本文的重点就是对jQuery对象进行分析和讨论。 2 jQuery对象 一般情况下,我们会这样使用jQuery: $(div).each(function(index){ ? //this ... }); $(div)执行完后回返回一个jQuery对象,each()方法是对这个对象中的DOM元素进行遍历,我们先看看$(div)的执行过程(本文源码摘自jQuery 3.0): jQuery = function( selector, context ) { ?return new jQuery.fn.init( selector, context ); } 这个方法就是$(div)的入口方法,$是jQuery的简写,就相当于jQuery(div) ,可以看出,这个方法只做了一件事,那就是返回jQuery.fn.init()函数的实例对象,那jQuery.fn.init 又是什么呢,我们再看下面的代码: init = jQuery.fn.init = function( selector, context, root ) { ?//...? ?return this; } init.prototype = jQuery.fn; jQuery.fn.init和init引用了同一个方法,这个方法根据selector查询出符合条件的DOM元素,并返回,可你会发现,返回的是this,这个this是什么呢?我们待会分析,先看下面的这句话: init.prototype = jQuery.fn; 这句话是什么意思呢,这句话是让init方法的prototype对象指向了jQuery.fn对象,那jQuery.fn又是什么鬼? 我们继续看代码: jQuery.fn = jQuery.prototype = { ?// The current version of jQuery being used ?jquery: version, ?constructor: jQuery, ?// The default length of a jQuery object is 0 ?length: 0, ?// Execute a callback for every element in the matched set. ?each: function( callback ) { ? return jQuery.each( this, callback ); ?}, ?splice: arr.splice }; 为了节省篇幅,我省略了其中一些代码,从这里可以看出,jQuery.fn 其实就是jQuery的原型对象,这个原型对象中定义了一些对this对象进行操作的方法。到这里,你是不是感觉到有点绕,不要着急,我们来梳理一下思路:jQuery首先定义了一个init方法,然后在init的原型对象protot
您可能关注的文档
最近下载
- 高三地理(衡水金卷四省2026届高三年级9月份联考)含答案或解析.doc VIP
- 小学跨学科项目式学习与人工智能融合的实践路径研究教学研究课题报告.docx
- 锚杆支护工理论考试题库500题(含答案).docx VIP
- 离子反应 测试题 高一上学期化学人教版(2019)必修第一册+.docx VIP
- 第19课 法国大革命和拿破仑帝国 课件.ppt VIP
- 江苏省2024年中职职教高考文化统考市场营销专业综合理论试卷及参考答案.pdf VIP
- 四库全书基本概念系列文库:光绪临朐县志.pdf VIP
- 盐类的水解 同步练习题 高二上学期化学人教版(2019)选择性必修1+ (1).docx VIP
- 走向辉煌2011高考语文阅读飞跃与写作创新.pdf VIP
- 口腔颌面部创伤【115页】.pptx VIP
文档评论(0)