- 浏览: 85796 次
文章分类
最新评论
jQuery对象包含的内容及两种扩展方式
标识符jQuery,我们可以理解其为一个function,
而jQuery的fn,我们理解其为prototype,因为jQuery.fn = jQuery.prototype =
还要注意一句话jQuery.fn.init.prototype = jQuery.fn。该句把function jQuery的原型赋值给了function init的原型。
当调用$("#id")时返回的对象组成包括两个部分,由function init中this带的(如this.context);由function jQuery的prototype带的(如this.size/this.toArray);
jQuery对象由以下部分组成:
1,挂在jQuery.prototype.init中的this上的属性或方法。
2,挂在jQuery.prototype.init.prototype上的属性或方法。
3,因为把jQuery.prototype赋值给了jQuery.prototype.init.prototype,所以挂在jQuery.prototype上的属性和方法也是jQuery对象的一部分。
4,通过jQuery.fn.extend({...})方式扩展的属性或方法
jQuery.extend扩展和jQuery.fn.extend扩展的区别
首先注意到
注意这一段代码,length代表extend中的参数个数,i初始化为1,如果extend中只有一个参数的话,那么this就赋值给target。
1如果是jQuery.extend 那么this就为function jQuery,也就是说给function jQuery添加了许多静态方法。些方法都可以直接通过jQuery.xx(或$.xx)方式来调用,而不是先执行(调用)jQuery方法再去调用xx,如$("#id").xx。
因此,jQuery中的isFunction, isArray, isWindow等都是静态方法,只能通过$.isFunction, $.isArray, $.Window引用。而不能通过$("...").isFuction, $("...").isArray, $("...").isWindow方式引用。
2.如果是jQuery.fn.extend那么this就为jQuery.protoype ,因为fn为prototype,也就是给jQuery.prototype上添加了许多属性,方法。当jQuery函数执行时,如$()或jQuery(),更多时候是$()。这时则把扩展的属性,方法都附加到new生成的对象上了。(注意prototype的属性就是等到new时,才会原型的所有属性立即赋予要创建的对象上)
因此扩展的属性或方法都添加到jQuery对象上了。如bind, one, unbind等可以通过$("...").bind, $("...").one, $("...").unbind方式调用。却不能通过 $.bind, $.one, $.unbind方式调用。
标识符jQuery,我们可以理解其为一个function,
var jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' return new jQuery.fn.init( selector, context, rootjQuery ); }
而jQuery的fn,我们理解其为prototype,因为jQuery.fn = jQuery.prototype =
{ constructor: jQuery, init: function(selector, context, rootjQuery){ } }
还要注意一句话jQuery.fn.init.prototype = jQuery.fn。该句把function jQuery的原型赋值给了function init的原型。
当调用$("#id")时返回的对象组成包括两个部分,由function init中this带的(如this.context);由function jQuery的prototype带的(如this.size/this.toArray);
jQuery对象由以下部分组成:
1,挂在jQuery.prototype.init中的this上的属性或方法。
2,挂在jQuery.prototype.init.prototype上的属性或方法。
3,因为把jQuery.prototype赋值给了jQuery.prototype.init.prototype,所以挂在jQuery.prototype上的属性和方法也是jQuery对象的一部分。
4,通过jQuery.fn.extend({...})方式扩展的属性或方法
jQuery.extend扩展和jQuery.fn.extend扩展的区别
首先注意到
jQuery.extend = jQuery.fn.extend = function() { ... };也就是这两种方式的源代码都是相同的,但是他们的主要区别在哪里呢?
if ( length === i ) { target = this; --i; }
注意这一段代码,length代表extend中的参数个数,i初始化为1,如果extend中只有一个参数的话,那么this就赋值给target。
1如果是jQuery.extend 那么this就为function jQuery,也就是说给function jQuery添加了许多静态方法。些方法都可以直接通过jQuery.xx(或$.xx)方式来调用,而不是先执行(调用)jQuery方法再去调用xx,如$("#id").xx。
因此,jQuery中的isFunction, isArray, isWindow等都是静态方法,只能通过$.isFunction, $.isArray, $.Window引用。而不能通过$("...").isFuction, $("...").isArray, $("...").isWindow方式引用。
2.如果是jQuery.fn.extend那么this就为jQuery.protoype ,因为fn为prototype,也就是给jQuery.prototype上添加了许多属性,方法。当jQuery函数执行时,如$()或jQuery(),更多时候是$()。这时则把扩展的属性,方法都附加到new生成的对象上了。(注意prototype的属性就是等到new时,才会原型的所有属性立即赋予要创建的对象上)
因此扩展的属性或方法都添加到jQuery对象上了。如bind, one, unbind等可以通过$("...").bind, $("...").one, $("...").unbind方式调用。却不能通过 $.bind, $.one, $.unbind方式调用。
发表评论
-
JavaScript高效图形编程学习笔记
2013-04-05 15:25 794第一章代码重用和优化 一、有关继承的一些笔记 1.在JS中,类 ... -
理解JS call apply
2012-11-06 14:35 850call([thisObj[,arg1[, arg2[, [, ... -
浅析JS全局变量与局部变量 执行环境 作用域链 JS解释器执行过程
2012-11-05 16:04 1375参考http://hi.baidu.com/cjry_ ... -
javascript encodeURI和encodeURIComponent的比较
2012-10-30 16:38 857encodeURI 和 encodeURIComponent都 ... -
JS跨域的理解
2012-10-30 15:08 885首先我们要理解什么是JS跨域的由来! 我是这样理解的,因为HT ... -
jquery.history简单理解
2012-10-30 14:34 1803jquery.history的简单理解 原理是利用形如 ma ... -
js事件捕获和事件冒泡
2012-10-28 10:48 927] Netscape 定义了事件捕获,先是最顶级的元素(doc ... -
早绑定和晚绑定
2012-10-17 11:13 991引用早绑定(early binding)是指在实例化对象之前定 ... -
AJAX和JSON的一些理解
2012-09-22 20:09 721正在学习JSON和AJAX,记录下自己的理解 AJAX 什么是 ... -
关于火狐浏览器页面无法获得焦点的学习笔记
2012-07-17 19:13 1022发现类似:window.setTimeout(function ... -
JS应用对于IE和Firefox的区别
2012-07-17 18:51 01.FireFox没有window.event而且没有srcE ... -
javascript中arguments、callee、caller用法学习笔记
2012-07-16 10:22 994首先是caller和callee的区别。注意caller和ca ... -
【转】event对象、srcElement、offsetX 在 firefox中的解决方案
2012-07-16 09:13 1072问题一:在IE中event作为 ...
相关推荐
《jQuery权威指南》除了理论知识丰富而全面外,它还有一个最大的特点就是注重实战,每个知识点都有一个完整的案例,包括需求分析、代码实现和结果展示三个部分,而且还包含两个综合性的案例,它的实践性之强是目前...
jQuery插件的开发包括两种:一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法。jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加...
没错,上面两行代码已经分别实现了一个id为Msg的jquery对象的渐入和淡出。做一个像Gmail一样的动态加载通知条,用jquery就那么简单。两个函数接受的参数除了快慢等,还可以接收整型,作为渐入或淡出的完成时间,...
两种方式: 1、直接jQuery.map //将原数组中每个元素加 4 转换为一个新数组。 $.map( [0,1,2], function(n){ return n + 4; }); //结果: [4, 5, 6] //原数组中每个元素扩展为一个包含其本身和其值加 1 的数组,并...
.net 企业库 三层架构 jquery 资料合集 实例 jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多javascript...如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化。
elements (Element, Array) : 用于封装成jQuery对象的DOM元素 示例 设置页面背景色。 jQuery 代码: $(document.body).css( "background", "black" ); -------------------------------------------------------...
插件支持5种大的校验方式,分别是:inputValidator(针对input、textarea、select控件的字符长度、值范围、选择个数的控制)、compareva lidator(提供2个对象的比较,目前可以比较字符串和数值型)、ajaxValidator...
02 什么是异常处理及异常处理的两种方式对比 03 多分支与万能异常 04 异常处理的其他内容 05 什么时候用异常处理 06 什么是socket 07 套接字发展及分类 08 基于tcp协议的套接字编程 09 socket底层工作原理解释 10 ...
可以使用querySelectorAll和jQuery两种CSS选择器。 RegEx是唯一不区分大小写的案例。 针对大型XML文件(> 1MB)进行了高度优化。 独立版本-由于避免了Chrome缓慢的加载过程,因此速度极快。 全局x变量( window...
此后,它已扩展到包括丰富的功能集-支持词干,停用词和TF-IDF排名。 以下是一些JS Perf基准测试,用于比较这两个搜索库。 (感谢调整了Lunr方面,以便进行更好的比较!)如果您正在寻找一种更简单,经过Web-worker...
消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener 在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被...
xhEditor提供两种方式初始化编辑器: 方法1:利用class属性来初始化和传递各种初始化参数,例: class="xheditor {skin:'default'}" 方法2:利用xhEditor提供的jQuery插件接口来实现对特定textarea的初始化和传递...
本书全面探讨了 iphone平台的两种编程方式 ——web开发和 sdk编程。全书结合示例对这两种编程方式的基本流程、基本原理和基本原则给出了详细而通俗的讲解。在 web开发方面,分别介绍了三个 iphone web库,即 ...
点击“模板选择”,可以设置该栏目的栏目页显示模板、勾选栏目对应的内容模型及模型对应的模板,如下图所示 点击“浏览”按钮将会弹出模板选择层,模板是按分类进行树形显示,点击末级节点,右侧将会出现改分类...
在SWFUpload的使用过程中,无论在客户端还是服务器端都要和File Object打交道,在一个File Object中包含了以下内容: { id : string, // SWFUpload file id, used for starting or cancelling and upload ...
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...
jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...