用这个:
console.log($('li:eq(1)'));
Chrome注销:
[li, prevObject: x.fn.x.init[1], context: document, selector: "li:eq(1)", jquery: "1.10.2", constructor: function…]
似乎是一个数组,因为结果周围有[]。
但:
console.log(typeof $('li:eq(1)'));
Chrome只会退出:
object
那么包装器的类型是什么?
答案 0 :(得分:1)
在Javascript中,数组的类型为Object
,因此它们都是。 jQuery是一个实现大量数组方法的对象,它将匹配元素本身与数组索引存储在一起,并且在很多方面表现得像一个数组。您可以这样想(为了帮助理解而大大简化,不是jQuery的构造函数如何工作):
function $(selector, context) {
var elems = (context || document).querySelectorAll(selector),
len = elems.length,
i = 0;
for( ; i < len; i++) {
this[i] = elems[i];
}
this.length = len;
this.slice = Array.prototype.slice;
return this;
}
console.log($('p').slice(0));
您在原始console.log
中看到的是匹配元素和jQuery公开公开的一些其他属性。