04.02.2010, 17:25
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от Kolyaj
|
Для такого случая как раз нужно указывать reduceInit: 0, т.к. иначе в первой итерации sum будет равна ссылке на элемент. По сути можно и условие из filter туда же засунуть, это на любителя, я предпочитаю разбивать задачи на более мелкие более простые подзадачи.
|
подожди, я имел в виду с другой реализацией
var reduceValue = options.reduceInit;
for( var i=0, j=0; i<els.length; i++ ) {
...
if( options.reduce )
reduceValue = options.reduce.call( options.scope, reduceValue, el, j );
и реализация стала проще. Можно добавить еще значение по умолчанию 0/пустая строка/whatever
Сообщение от Kolyaj
|
Это библиотечка, т.е. код с высокой реюзабельностью, поэтому для данного кода я ищу компромисс "эффективность кода -- максимально малый размер -- приемлемая читабельность"
|
а размер зачем? А как ты решения принимаешь? На глаз?Я пока рассчитываю, что, по-крайней мере в большинстве случаев, не имеет смысла жертвовать читабельностью ради производительности. В частности, если не пытаться реализовать поиск по сферическим селекторам в вакууме
Ну и я не говорил, что нужно воспринимать тот код, как готовые решения. Можно, например, просто парсинг селекторов вынести
|
|
04.02.2010, 17:33
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от x-yuri
|
я имел в виду с другой реализацией
|
Все-таки лучше оставить стандартное для reduce поведение, чтобы не путаться.
Сообщение от x-yuri
|
а размер зачем?
|
Хм, ну чтоб меньше был.
Сообщение от x-yuri
|
А как ты решения принимаешь? На глаз?
|
Разумеется всё сугубо субъективно и по настроению. Наутро встану -- перепишу Обсудить-то мне это не с кем
|
|
05.02.2010, 08:36
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от Kolyaj
|
Разумеется всё сугубо субъективно и по настроению. Наутро встану -- перепишу
|
вот это мне и не нравиться. Ты ставишь читабельность на третье место, не зная, что это тебе дает на практике
|
|
05.02.2010, 08:55
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от x-yuri
|
вот это мне и не нравиться.
|
Ну для себя-то у меня всё обосновано, а больше мне некому обосновывать. Если хочешь, можешь форк сделать, а там и смержим что-нибудь
Сообщение от x-yuri
|
Ты ставишь читабельность на третье место
|
Это не значит, что она не важна в принципе. Просто если из двух вариантов читабельный сильно больше места занимает или работает неэффективно, то я выберу нечитабельный вариант. Но это должна быть большая разница в размерах, байты я, конечно, не считаю. В прикладном коде всё наоборот, на первом месте читабельность, т.к. его постоянно переписывать приходится.
Сообщение от x-yuri
|
не зная, что это тебе дает на практике
|
Это мне даёт маленькую функцию с огромными возможностями по выборке, которую я могу подключить без опаски притянуть за ней огромный фреймворк. Поэтому размер и эффективность на первом месте -- требования к функции меняться не будут, а значит и переписываться она, в идеале, не будет, только правка багов. Но, разумеется, код должен быть максимально читабелен.
|
|
05.02.2010, 16:30
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от Kolyaj
|
Если хочешь, можешь форк сделать, а там и смержим что-нибудь
|
да я уже немного попробовал, пока что ты смержил только баг Ну понятно, в общем-то, проиритеты разные. А вообще, хочу позже что-нибудь выложить. Пока рано
|
|
18.04.2010, 18:35
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
Метод clone в http://alljs.ru/crossjs/source/lang/Array.js правильно работает только с одномерными массивами. Так и задумано?
var array1 = [[]];
var array2 = array1.slice(0);
alert([
array1 === array2,
array1[0] === array2[0]
]);
|
|
18.04.2010, 20:33
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от Octane
|
Так и задумано?
|
Да я, честно говоря, и не задумывался об этом ))
|
|
10.09.2010, 18:34
|
Аспирант
|
|
Регистрация: 12.12.2009
Сообщений: 54
|
|
В файле Element.js в функции M.removeClass используется регэксп:
new RegExp('($|\\s)' + cl + '(?=\\s|$)', 'g')
Вероятно, в первой скобке вместо доллара должна быть крышка (^)?
|
|
10.09.2010, 21:39
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
stopkran,
спасибо, поправил. Неприятный баг.
|
|
12.09.2010, 07:43
|
Аспирант
|
|
Регистрация: 12.12.2009
Сообщений: 54
|
|
А вот и небольшая критика M.addClass: http://ir2.ru/show-hide-toggle.aspx (там больше критики obj.style.display = "none", поэтому отдельная статья)
|
|
|
|