Я пытаюсь воспроизвести структуру объекта jQuery (1.7.1), чтобы лучше понять, как это работает. I есть следующий код:
(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, но безрезультатно . Может быть, я просто неправильно понимаю терминологию, я не уверен. Кажется, я не могу найти какой-либо подробный источник, объясняющий это.
Возможно, мой код просто неполный, но базовая структура, которая у меня есть, такова. что мне удалось извлечь. Пожалуйста, исправьте то, что у меня есть, если оно неверное, неполное или неэффективное, и во что бы то ни стало, пожалуйста, не стесняйтесь доказывать ide полезно прочитать о: