Как jQuery может вернуть массив и при этом иметь объект jQuery?
Я пытаюсь воспроизвести объектную структуру jQuery (1.7.1), чтобы лучше понять, как она работает. У меня есть следующий код:
(function (window, undefined) {
var document = window.document,
navigator = window.navigator,
location = window.location;
window.myclass = (function () {
var __con = function () {
return new __con.fn.init();
}
__con.fn = __con.prototype = {
'init' : function () {
return this;
},
'test' : function () {
console.log('test1');
return this;
}
}
__con.fn.init.prototype = __con.fn;
__con.test = function () {
console.log('test2');
return this;
}
return __con;
})();
})(window);
Моя консоль выглядит так:
> myclass().test();
test1
< __con.fn.__con.init
> myclass.test();
test2
< function () {
return new __con.fn.init();
}
Я путаюсь с тем, как jQuery может возвращать массив и при этом иметь объект jQuery? jQuery, выполняемый из консоли, может выглядеть примерно так:
> $(document.body)
[<body>…</body>]
> $(document.body).css('width');
"1263px"
На самом деле, одна вещь, которую я определенно заметил, это отсутствие<
для возвращаемого объекта. Так что именно здесь происходит? Я искал по всему Google, чтобы объяснить, как работает jQuery, но безрезультатно. Может быть, я просто неправильно понимаю терминологию, я не уверен. Кажется, я не могу найти подробный источник, объясняющий это.
Возможно, мой код просто неполон, но базовая структура, которую я имею до сих пор, это то, что я смог извлечь до сих пор. Пожалуйста, исправьте то, что я имею до сих пор, если это неправильно, неполно или неэффективно, и во что бы то ни стало, пожалуйста, не стесняйтесь дать хорошее чтение о:
Javascript лучшие практикиКак работает jQueryЭффективные классы JavascriptВсе о структурах объектов JavascriptОдиночкиПрототипыВсе остальное, что связано с этим типом структуры, называется