Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jQuery механизм (https://javascript.ru/forum/jquery/49153-jquery-mekhanizm.html)

skrudjmakdak 31.07.2014 14:12

jQuery механизм
 
открыл исходник 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;


вопрос в том, что не догоняю как это все получается

Sweet 31.07.2014 15:13

Цитата:

Сообщение от skrudjmakdak
когда мы вызываем jQuery(), то получаем объект в виде массива, а не обычный объект.

Не, мы получаем как раз таки обычный объект. Просто он отображается в консоле как массив. Не вникал в подробности, почему оно так. Просто консоль в хроме так работает. Видимо, чтобы ввести в заблуждение.


Часовой пояс GMT +3, время: 17:55.