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

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)

这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值