我想知道 jQuery 对象如何在 Chrome 开发者工具的控制台日志中显示为数组。
例如。如果我执行$('<a>')
,我在控制台日志中看到的是:
[<a></a>]
但以下说法是错误的:
var a = $("<a>");
Array.isArray(a); // false
a instanceof Array; // false
我尝试修改 jQuery 并看看会发生什么,令人惊讶的一件事是删除length
从 jQuery 函数中删除数组符号:
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 代码中的什么使开发人员工具将实例显示为数组。 jQuery 中添加了哪些属性/函数/事物,使得开发人员工具在显示实例时将其作为数组处理?
From http://api.jquery.com/jQuery.makeArray/ http://api.jquery.com/jQuery.makeArray/:
许多方法(无论是在 jQuery 中还是在 JavaScript 中)都返回类似数组的对象。例如,jQuery 工厂函数 $() 返回一个 jQuery 对象,该对象具有数组的许多属性(长度、[] 数组访问运算符等),但与数组并不完全相同,并且缺少一些属性。数组的内置方法(例如 .pop() 和 .reverse())。
基本上,该对象必须具有length
and splice
属性类似于数组。这是一个相关的问题:JavaScript 中类似数组的对象 https://stackoverflow.com/questions/6599071/array-like-objects-in-javascript
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)