2013-12-12 6 views
0

с этим:Каков тип набора оберток, возвращаемого селектором 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 

так что это тип обертки установлен?

+0

Тип массива - это объект https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof .. также результат оболочки jQuery не является реальным массивом ... это массив вроде объекта –

+0

спасибо, поэтому хром дает массив, похожий на объект []? – igonejack

+0

'typeof [] ===" object "' –

ответ

0

Массивы имеют тип Object, а также в Javascript, так что это и то, и другое. 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 разоблачительные публично.

+0

спасибо, как хром вычислить объект, как массив, и придает ему [] вместо {}? Я имею в виду для объекта, не должно быть {}? – igonejack

+0

Я не знаком с конкретной реализацией Chrome, но, вероятно, ищет определенные методы или свойства, которые являются общими для объектов Array, когда решают, как форматировать вывод консоли. В Firefox вывод: 'jQuery (p, p, p, p, p.newsletter-description, p, p, p, p, p, p, p, p, p, p, p, p, p, p , p.privacy-policy-соглашение, p.label-key, p.label-key, p.label-key, p.label-key, p.label-key, p.label-key, p.label-key) ' –

Смежные вопросы