`
weiqingfei
  • 浏览: 318246 次
  • 性别: Icon_minigender_1
  • 来自: 黑洞
社区版块
存档分类
最新评论

JQuery小刨-2

阅读更多
看一下new一下jQuery.fn.init到底返回了什么。

1.如果参数selector是空或者无效的话,返回了一个this。
很显然这个this是在jQuery.fn.init之内的,所以返回的这个this就是方法jQuery.fn.init的一个实例,但是这个方法其实是没有任何可以向外输出的方法或者属性的,那返回的这个实例有什么用?
原来关键在于这一句
jQuery.fn.init.prototype = jQuery.fn;

把jQuery.fn.init.prototype指向jQuery.fn这个object,那么jQuery.fn的所有方法和属性就都归jQuery.fn.init所有了,往下面看我们可以发现方法的扩充都是对jQuery.fn这个object来实行的。

2.如果select是个DOM元素的话,会有这样一个操作:
this.context = this[0] = selector;


关键是这个this[0],乍一看,还以为this怎么又成了数组了?其实这儿不是数组。这就涉及到javascript对象的本质了,javascript所有的对象包括数组都是个哈希表,属性名(包括方法名)就是key,属性值(包括方法实现)就是value。
使用this[0]并不代表这就是个数组,它也可以是个普通的object,比如:
var a = {length:3,0:0,1:1,2:2};
a.length = 2;
alert(a[0]);
alert(a[1]);
alert(a[2]);

如果a是数组的话,a[2]应该是没有值的,但是上面有。
另外,使用
Object.prototype.toString.call(a)

也可以判读其不是个数组。

对于哈希表的值有两种存取方式,一种是
object.key

第二种是:
object[key]


如果key是数字,或者是javascript的关键字,保留字,或者有空格的话,只能用第二种方式。

从上面的分析可以看出,其实对this[0]的复制,只是对this这个object添加了一个key为0的属性,并赋予其值。
但是,由于其有length属性,以及数字属性,所以其也同样会表现出数组的特性,所以可以使用数组的方法调用,比如
var b = Array.prototype.slice.call(a,0);


题外话,使用firebug调试的时候发现,如果一个object里有length,splice两个属性,就会被firebug显示为数组的形式(比如[])。
分享到:
评论

相关推荐

    jquery-ui-1.8.16

    jquery-ui-1.8.16jquery-ui-1.8.16jquery-ui-1.8.16jquery-ui-1.8.16jquery-ui-1.8.16jquery-ui-1.8.16jquery-ui-1.8.16jquery-ui-1.8.16jquery-ui-1.8.16jquery-ui-1.8.16jquery-ui-1.8.16jquery-ui-1.8.16jquery-...

    jquery插件jquery-ui-1.8.2.custom.min.js

    《jQuery UI与jQuery插件深度解析——以jquery-ui-1.8.2.custom.min.js为例》 在Web开发领域,jQuery库以其简洁易用的API和强大的功能深受开发者喜爱。而jQuery UI作为jQuery的一个扩展,提供了丰富的用户界面组件...

    jquery-migrate-1.2.1.js文件

    `jquery-migrate-1.2.1.min.js` 是这个插件的压缩版本,用于生产环境,它具有更小的文件大小,减少了页面加载时间,但同样提供向后兼容性支持。 **jqPrint插件与jQuery Migrate的结合** `jqPrint` 是一个jQuery...

    jquery-ui-1.8.2.custom.min.js,jquery-ui-1.8.4.custom.css

    在实际项目中,`jquery-ui-1.8.2.custom.min.js`和`jquery-ui-1.8.4.custom.css`通常一起使用,以确保JavaScript组件的外观和行为与CSS样式协调一致。然而,需要注意的是,这两个版本相对较旧,可能不包含后来版本中...

    jquery-ui-1.8.16.custom.min.js/jquery-ui-1.8.16.custom.css

    这个压缩包包含两个关键文件:`jquery-ui-1.8.16.custom.min.js` 和 `jquery-ui-1.8.16.custom.css`,这些都是jQuery UI的特定版本,即1.8.16。这个版本在当时是一个广泛使用的稳定版本,提供了丰富的功能和组件。 ...

    jquery插件jquery-ui-1.8.18.custom.min.js及css文件

    在本篇文章中,我们将深入探讨其自定义版本 `jquery-ui-1.8.18.custom.min.js` 和相关的 CSS 文件,以理解它们如何协同工作,为网页带来强大的功能和美观的界面。 首先,`jquery-ui-1.8.18.custom.min.js` 是 ...

    jquery.datepicker-zh-CN.js

    <script src="./public/js/jquery-ui-1.10.3.min.js"> <script src="./public/js/jquery.datepicker-zh-CN.js"></script> <link href="./public/css/jqueryui/jquery-ui-1.10.3.min.css" rel="stylesheet"> $( "#...

    jquery.editable-select

    `jquery.editable-select` 就是建立在 jQuery 之上,因此在使用前需要确保页面中已经引入了 jQuery。 2. **选择器的增强**:在默认情况下,HTML `<select>` 元素的功能相对有限。`jquery.editable-select` 提供了一...

    插件jquery-ui-timepicker-addon.js

    jquery插件jquery-ui-timepicker-addon.j

    jquery-ui-datepicker中文版

    jquery-ui-日期框扩展成时间框 jquery-ui时间框 基于别人的代码进行修改 jquery-ui-1.8.16.custom.css文件末尾加入以下代码 .ui-timepicker-div .ui-widget-header{ margin-bottom: 8px; } .ui-timepicker-div dl{ ...

    jquery-ui-1.10.2.custom

    在这个主题中,我们将深入探讨的是 `jquery-ui-1.10.2.custom` 版本,这是一个定制化的版本,包含了对 jQuery 1.9.1 的支持。 首先,让我们从 `jquery-ui-1.10.2.custom` 的核心组件开始。这个版本提供了包括但不...

    jQuery版本迁移辅助插件jquery-migrate-1.2.1.min.js

    jQuery版本迁移辅助插件,如果您使用的低版本jQuery改为高版本后出现错误,可以试试这个插件。用来检测和恢复在jQuery1.9版本中已删除或已过时的API。jquery-migrate-1.2.1.js,jquery-migrate-1.2.1.min.js

    jquery-ui-1.11.2日期控件datepicker

    最新jquery-ui-1.11.2日期控件,官网下载内涵图片和自己添加的中文辅助jquery-ui-timepicker-zh-CN.js,经过本人测试绝对可以用,不知道怎么用的百度上找个例子即可,需要导入的包 ${ctx}/plugins/jquery-ui-1.11.2/...

    jquery-easyui-EDT-1.5.2-build1

    jquery-easyui-EDT-1.5.2-build1 jquery-easyui-EDT-1.5.2-build1

    jquery-1.6.4-vsdoc.js

    最新版jquery-1.6.4-vsdoc.js jQuery的VS智能提示插。压缩包内包含jquery-1.6.4.js jquery-1.6.4.min.js jquery-...2、切记:两个文件的文件名不能修改,并且只要引用jquery-1.6.4.js而不要引用jquery-1.6.4-vsdoc.js。

    struts2-jquery-plugin-3.1.0.jar

    struts2-jquery-plugin-3.1.0.jar

    jquery-migrate-3.0.1.js jar包

    <script src="path/to/jquery-migrate-3.0.1.js"> ``` 这里的`path/to`应该替换为实际的文件路径。 **四、迁移策略** 使用jQuery Migrate并不是长久之计,它只是一种过渡手段。开发者应根据控制台的警告信息,...

    jquery-ui-1.9.2.custom.min.js

    在我们讨论的文件 "jquery-ui-1.9.2.custom.min.js" 中,我们可以看到这是该库的一个特定版本——1.9.2的自定义最小化版本。这个文件的核心在于“定制”和“最小化”,这两个特点使得它在实际项目中更具灵活性和效率...

    jquery-ui-1.10.3.min.js

    jquery-ui-1.10.3.min.js

    jquery-migrate-1.2.1.min.js

    jquery-migrate-1.2.1.min.js 在网上下载一些 js 插件使用的时候,经常出现这种情况。但是更换低版本 jquery,比如 使用 1.7 版本的 jquery 却不会报错,能正常使用。 经过一番搜索,发现是因为高版本(1.9版本以后)...

Global site tag (gtag.js) - Google Analytics