您的位置:首页 > Web前端 > JQuery

jQuery如何返回一个类数组对象,js让一个对象的行为像一个数组一样

2015-12-08 10:36 661 查看
jQuery在使用$或者jQuery这个关键字的方法时,会在其框架内部动态的创建一个构造函数,下面这个函数:

.......
jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context, rootjQuery );
}
.......


然后控制台输出jQuery的对象是这样的:



是一个类似数组的对象,而不是一个我们通常认为的{}。

那么jQuery是在哪里修改使得这个返回的实例像数组一样的呢,看下面这段代码,截自jQuery-1.7.1:

// For internal use only.--仅限内部使用
// Behaves like an Array's method, not like a jQuery method.--让它想一个数组一样拥有数组的方法,但不是一个jQuery的方法

length:0,
push: push,
sort: [].sort,
splice: [].splice


原理的话,本人水平有限,说不太清,但是下面可以举个例子:

var Colors = {
a:'red',
b:'blue',
c:'black'
}


上面是一个对象,我们打印下:



是一个标准的Object,那么怎样修改成一个类数组呢,借助jQuery的方法:

var Colors = {
a:'red',
b:'blue',
c:'black',
length:0,
splice: [].splice
}
console.log(Colors)


输出如下



但是此时并没有push,sort方法,只需要添加即可

push = Array.prototype.push;
var Colors = {
a:'red',
b:'blue',
c:'black',
length:0,
push: push,
sort: [].sort,
splice: [].splice
}
console.log(Colors)


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jquery 函数 对象