jQuery选择器返回的包装器类型是什么?

时间:2013-12-12 03:47:43

标签: javascript jquery

用这个:

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

那么包装器的类型是什么?

1 个答案:

答案 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公开公开的一些其他属性。