在Chrome的开发工具中,是什么让一个jQuery对象显示为一个数组?

我想知道如何在Chrome浏览器的开发人员工具的控制台日志中显示jQuery对象作为数组。

例如,如果我执行$('<a>') ,我在控制台日志中看到的是:

 [<a>​</a>​] 

但是下面的陈述是错误的:

 var a = $("<a>"); Array.isArray(a); // false a instanceof Array; // false 

我试图修改jQuery,看看会发生什么,有一件令人惊讶的事情是,从jQuery函数中删除length将删除数组符号:

 length: 0, // commenting this line removes array notation 

相反,它显示为(箭头是可扩展的实体):

 > jQuery.jQuery.fn.jQuery.init 

但是,如果我试图让我自己的构造函数应该以数组符号显示,它不起作用:

 var test = function() { this.length = 0 }; new test(); // Logged (arrow is same one as before): // > test 

所以我想知道什么在jQuery代码使开发工具显示实例作为一个数组。 什么属性/function/东西被添加到jQuery,使开发工具处理它显示一个实例时的数组?

http://api.jquery.com/jQuery.makeArray/

通常,jQuery和JavaScript中的许多方法都会返回类似数组的对象。 例如,jQuery工厂函数$()返回一个jQuery对象,它具有许多数组的属性(长度,[]数组访问运算符等),但与数组并不完全相同,缺less一些数组的内置方法(如.pop()和.reverse())。

基本上,该对象必须具有lengthsplice属性是类似数组的。 这是一个相关的SO问题: 在Javascript中的数组像对象

你可能知道这一点,但console.log不是“按原样”显示传递的内容,它试图“聪明”,并做一些后处理。 如果你想看到“原样”的原始对象,有console.dir方法。