| 
 "За" и "против" библиотек работы с DOM и пр. Почти досконально изучив jQuery, задался вопросом, стоит ли разбираться в "безбиблиотечной" работы в, первую очередь, с DOM? Конечно, олд-скульный программист в меня кинет помидор, но хотелось бы взвесить все "за" и "против", так как не знаю уже в чем разбираться (взялся за node.js, но так как он не востребован, пока что он входит в ряд "развлечений"). Итак, отличия (привожу только плюсы). Нативный Яваскрипт + Такой программист крут в глазах соответствующих сообществ + Может сделать свою библиотеку с блекджеком и хукерами (смысл?) jQuery + jQuery может изучить даже идиот + Разработка на jQuery достаточно проста и требует в разы меньше времени (что является плюсом для заказчиков и исполнителей, так как деньги всё те же, а платят за результат) + Прост в дебаге из-за меньшего количества кода + Не нужно париться о кроссбраузерности + Больше заказов (примерно в Inf раз, сужу по буржуйскому фрилансу) | 
| 
 Цитата: 
 | 
| 
 Что то плюсов нативного js вы мало увидели. Причем какие то загадочные.  Я например вообще не разделяю особенно понятия jquery и js. JS - это все, а jquery - просто некая помощь, обертка по программированию DHTML Если, в качестве дальнейшего саморазвития, хотите вглубь копнуть, можете посмотреть как данный фреймворк сделан. Будет проще чем с jq. Можете extJS начать изучать, но он больше не для сайтов, а для web-приложений. Бывает востребован. | 
| 
 Цитата: 
 Если какой-то метод jQuery работает чуть чуть не так, как надо, пишем ещё тонну кода, чтобы и jQuery использовать, и так, как нам надо. А вообще странная тема, изучайте, что хотите, кому какое дело. | 
| 
 Цитата: 
 | 
| 
 Цитата: 
 Я вот давно не могу понять, зачем в функцию передавать undefined в качестве аргумента. и в jQuery и в этой библиотеке есть такой момент. | 
| 
 FINoM Чтобы при запросе undefined интерпретатор не искал его во всех областях видимости, пока не дойдёт до window. Что-то в этом роде. Байтодрочерство, одним словом. | 
| 
 Не хочется плодить тем с нубскими вопросами, объясните следующую вещь, пожалуйста:  Вот в jQuery можно написать $(nodes).method(); Как без оператора new и дополнения прототипов это сделать? | 
| 
 FINoM Только по-дурацки. В функции $ цеплять на объект-результат функции все нужные методы. 
function $(a) {
	var r = {};
	for (var i = 0; i < a.length бла-бла-бла
		... r[a[i]] = tratata(a, i);
	r.method = function () {...};
	return r;
}
$([]).method();
 | 
| 
 Matre, а как в таком случае писать плагины?  В jQuery например они создаются так: $.prototype.newMethod = ... Я не могу понять, прототип чего именно. | 
| 
 По сути я просто хочу повторить эффект jQuery, вызывать некую функцию (например, $), передавать туда htmlnode или nodelist, и вызывать методы работающие с содержимым параметра, с возможностью не лезя в код библиотеки добавить новые методы. | 
| 
 Цитата: 
 
function $(...) {
	var r = {};
	...
	for (var i in $.prototype)
		r[i] = $.prototype[i];
	...
}
$.prototype.ddd = function () {...};
В-общем, бред. А чем же Вам неугодны обычные прототипы? | 
| 
 Цитата: 
 Цитата: 
 | 
| 
 Каждый раз заново инициализировать методы для каждого объекта — вот это плохо. | 
| 
 Точно. Значит вопрос еще актуален. Спасибо. | 
| 
 Тут всё просто. Перегоняем массив в создаваемый функцией объект, а в плагинах работаем с ним как с обычным массивом: 
function $(...) {
	return new $.init(...);
}
$.init = function (...) {
	var I = 0;
	for (...)
		this[I++] = ...
	this.length = I;
};
$.prototype.plugin = function () {
	for (var i = 0; i < this.length; i++) ...
};
 | 
| 
 Цитата: 
 Цитата: 
 | 
| 
 Matre, круто, спасибо. Только зачем это: this.length = I; ? Понимаю, если бы нужно было очищать список от излишних узлов, но функция $ вызывается единожды, при создании списка узлов, а фильтровать и модифицировать элементы списка будем через методы. И зачем создавать методы $ через prototype? $.plugin не прокатит? Цитата: 
 Цитата: 
 Не знаю как это позиционировать, но возьму себе за правило. | 
| 
 Цитата: 
 Цитата: 
 | 
| 
 Цитата: 
 Цитата: 
 | 
| Часовой пояс GMT +3, время: 17:57. |