在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())。
基本上,该对象必须具有length
和splice
属性是类似数组的。 这是一个相关的SO问题: 在Javascript中的数组像对象
你可能知道这一点,但console.log
不是“按原样”显示传递的内容,它试图“聪明”,并做一些后处理。 如果你想看到“原样”的原始对象,有console.dir
方法。