открыл исходник jQuery и убрав кучу всего + немного переделав, получил небольшой вот такой код:
<html>
<head>
<title>example</title>
</head>
<body>
<script type="text/javascript">
var jQuery = function ()
{
return new jQuery.prototype.init();
};
jQuery.prototype = {
length: 0,
get: function (i)
{
console.log(this[i])
},
splice: Array.prototype.splice,
init: function ()
{
this[0] = 1;
this[1] = 2;
this.length = 2;
return this;
}
};
jQuery.prototype.init.prototype = jQuery.prototype;
console.log(jQuery.prototype);
console.log(jQuery());
jQuery().get(1)
</script>
</body>
</html>
когда мы вызываем jQuery(), то получаем объект в виде массива, а не обычный объект. он получается если в коде есть 3 строки:
length: 0,
splice: Array.prototype.splice, // не обязательно splice, это может быть и join и любой другой метод от Array
jQuery.prototype.init.prototype = jQuery.prototype;
вопрос в том, что не догоняю как это все получается