读jQuery之一(对象的组成)
2014-08-20 16:00
288 查看
以下是jQuery 1.6.1 代码片段
初看上去像是在用 原型方式 在写一个类jQuery(别名$),但实际我们使用时是函数调用$("#id"),却不是new $("#id")。
标识符 jQuery是一个function,其内new了一个function init的实例,然后返回。至此我们知道其真正的构造器是jQuery.fn.init。jQuery写的实在诡异,它把init又挂在了jQuery的prototype上,阅读起来有些绕人。
jQuery.fn.init.prototype = jQuery.fn; 是关键的一句。该句把function jQuery的原型赋值给了function init的原型。当调用$("#id")时返回的对象组成包括两个部分。
1,由function init中this带的(如this.context);
2,由function jQuery的prototype带的(如this.size/this.toArray);
模仿jQuery写一个
简单起见,这里选择器只传html element或元素id(后续会增强,但不实现全部css selector),this上挂了length属性,赋值为1。
当我们调用时
$()实际没有什么意义,只是为了测试调用后obj的组成。firebug控制台输出如下:
length:0;
init:function
attr:function
hide:function
即obj对象是由function init中this及function $.prototype组成的。
再看下$.prototype上的方法,我只添加了css和hide方法,这两个方法的实现也是极其简陋的。
先调用css设置了字体颜色为红色,3秒后隐藏了。
总结下:
jQuery对象指的是jQuery.prototype.init的实例,简单的说就是new jQuery.prototype.init。这里jQuery.prototype.init的类型是function,可以看成是一个类。
jQuery对象由以下部分组成:
挂在jQuery.prototype.init中的this上的属性或方法。
挂在jQuery.prototype.init.prototype上的属性或方法。
因为把jQuery.prototype赋值给了jQuery.prototype.init.prototype,所以挂在jQuery.prototype上的属性和方法也是jQuery对象的一部分。
通过jQuery.fn.extend({...})方式扩展的属性或方法(后续提到)。
标识符 jQuery是一个function,其内new了一个function init的实例,然后返回。至此我们知道其真正的构造器是jQuery.fn.init。jQuery写的实在诡异,它把init又挂在了jQuery的prototype上,阅读起来有些绕人。
jQuery.fn.init.prototype = jQuery.fn; 是关键的一句。该句把function jQuery的原型赋值给了function init的原型。当调用$("#id")时返回的对象组成包括两个部分。
1,由function init中this带的(如this.context);
2,由function jQuery的prototype带的(如this.size/this.toArray);
模仿jQuery写一个
当我们调用时
length:0;
init:function
attr:function
hide:function
即obj对象是由function init中this及function $.prototype组成的。
再看下$.prototype上的方法,我只添加了css和hide方法,这两个方法的实现也是极其简陋的。
总结下:
jQuery对象指的是jQuery.prototype.init的实例,简单的说就是new jQuery.prototype.init。这里jQuery.prototype.init的类型是function,可以看成是一个类。
jQuery对象由以下部分组成:
挂在jQuery.prototype.init中的this上的属性或方法。
挂在jQuery.prototype.init.prototype上的属性或方法。
因为把jQuery.prototype赋值给了jQuery.prototype.init.prototype,所以挂在jQuery.prototype上的属性和方法也是jQuery对象的一部分。
通过jQuery.fn.extend({...})方式扩展的属性或方法(后续提到)。
相关文章推荐
- 读jQuery之一(对象的组成)
- 读jQuery之一(对象的组成)
- 读jQuery之一(对象的组成)
- 读jQuery之一(对象的组成)
- 读jquery之一(jquery对象的组成)
- 读jQuery之一(对象的组成)
- JQuery对象可以理解为有多个Js对象组成的数组
- liferay中使用Jquery返回json对象处理
- Dom对象与Jquery对象
- 用json格式返回自定义对象。(jQuery asp.net)
- jQuery入门时的对象问题
- jQuery对象和DOM对象相互转化
- Jquery对已选择对象的操作包括样式
- JQuery选取器与其它JS框架冲突的解决方法 确保jQuery不会与其他库的$对象发生冲突
- jQuery-DOM对象和jQuery对象及转换 学习笔记二
- jQuery.API源码深入剖析以及应用实现(2) - jQuery对象访问和数据缓存
- jQuery对象与DOM对象
- 惊叹jQuery(解决jQuery对象到DOM的转换)
- jQuery对象之间的继承关系
- jquery:dom和jquery对象互转?