Как стать автором
Обновить

Комментарии 51

Не могли бы вы привести пример использования этой библиотеке и объяснить, что же в ней такое есть, чего вам так не хватало при работе с jQuery.
JQuery ориентивана на возню с HTML, Underscore же, очевидно из заголовков, ориентирована на упрощение работы с массивами, объектами, функциями, и так далее.
Документацию и примеры можно найти по ссылке.
Anonym, вы, наверно, без глаз.
Да вроде с глазами, просто я, прочитав топик, подумал, что отлично обхожусь без всего этого, вот и решил поинтересоваться.
Некоторые и без jQuery «отлично обходятся™».
А некоторые даже без Javascript! :)
™ — wapedia.mobi/ru/%D0%A2%D0%9C
Зачем вы поставили этот символ?
Из хулиганских побуждений, конечно.
Некоторые и без компьютера отлично обходятся и вообще искренне не понимают красноглазых товарищей ;-)
Эта библиотека нужна для того, чтобы повысить удобство при обработке данных в javascript. В том же jQuery реализована от силы пара функций из приведенных выше. И, по заверениям авторов, их версия работает быстрее.
простой пример
ширина блоков
jquery
Array.prototype.sum = function(){
for(var i=0,sum=0;i<this.length;sum+=this[i++]);
return sum;
}
$.makeArray($('.selector').map(function() { return $(this).width() })).sum()

или
var sum = 0;
$('.selector').each(function() { sum += $(this).width() });


+ Underscore.js
_.reduce($('.selector'), 0, function(m, el){ return m + el.width() });
Шел jQuery через jQuery
Видит jQuery в jQuery jQuery
Сунул jQuery руку в jQuery
jQuery, jQuery, jQuery, jQuery
как раз недавно надо было манипулировать с массивами так же как в примере! автору статьи респект! будем юзать.
Эх, засунуть бы все это в jQuery…
напишите плагин
религия не позволяет писать _.блабла() вместо $.блабла()?
религия не позволяет писать _( $( '.user' ) )
Хм, для чего это там? Это отдельный инструмент, ничего не мешает в случае необходимости использовать совместно.
Это будет как-то не тру.

Не тру будет смешивать компот с супом.
Отличная библиотека. Узнал о ней около года назад, с тех пор пользуюсь. Javascript made easy! )
Спасибо за статью. Прощайте, велосипеды!
То, что вы назвали «ошибкой», является на самом деле небольшим неудобством. Если вы не разрабатываете эту библиотеку (или тестируете), такое преобразование, которое еще и модифицирует интерфейс функции, ненужно.

И у объекта Exception есть свойство stack.
да, подумаешь, не узнать координаты ошибки… мелочи же х) настоящие джедаи видят потоки силы пересекающиеся в проблемных местах!
Если вы руками выкидываете эксепшн и интересуетесь стэком вызовов, вам нужно руками его ловить и руками выводить.

try {
throw new Error('hehe');
} catch (e) {
console.debug(e);
}

Возможно, при разработке или написании тестов, они пользуются чем-то подобным. В конечном продукте это лишнее и уж ошибкой точно не является.

Честно говоря, не помню, когда уже в последний раз видел стэк в JS… Год назад, когда на Dojo что-то делал, вроде видел нет-нет, а потом даж внимания не обращал =)
какого лешего я должен выполнять за браузер его работу?
Нет, ну это ж не прям глюк браузера. Это ближе к файербагу же. Кстати, вы бы могли свой класс Error им порекомендовать! Я серьезно
не, это похоже на глюк браузера…
у меня нет такого класс, у меня исправляются глюки в стандартном
В проектах, построенных на node.js, underscore.js может быть очень кстати, т.к. он даёт всё то, что есть в prototype.js и не завязывается на DOM

Ваш К.О.
прототайп как бы тоже не «завязан» на дом
Прототайп сильно повязан с DOM. Он и называется прототайпом, потому что расширяет объект prototype стандартных элементов (в т.ч. и DOM).

Это, кстати, сильно затрудняет поддержку кроссбраузерности.
он расширяет стандартные объекты и дом в частности. но он не требует наличия дома.
НЛО прилетело и опубликовало эту надпись здесь
Да, библиотека крута. Но это какой-то, извиняюсь, функциональный ад.

А по теме поста.

Наконец-то свершилось — нормальный, православный .max(), возвращающий значение массива, а не максимальное значение. Ну очень не хватало!

Очень удобная библиотека для написания встраиваемых скриптов. И без разницы в какое окружение оно встраивается, в Mootools, в Prototype или в JQuery.
Это функциональный рай! MAP! REDUCE! EACH!
«вне закона» — это юмор?
Всегда было проще написать быстренько свой метод, чем искать и тащить где-то такую библиотеку. Тем более, ничего принципиально сложного в ней нет.
Хотя кому-то несомненно будет полезна.
Кстати, многие функции для работы с массивами отсюда есть и в MooTools

И вы каждый раз будете писать свой метод или один раз найдете, научитесь и будете использовать инструмент, код после которого будет легче поддерживать и расширять чем тучи своих простеньких велосипедиков?
Подключать на каждую нужную функцию новую библиотеку я точно не буду.
Как и в Prototype, если есть берётся forEach, если нет, используется неправильный аналог.

var a = ['a', 'b'];
a[5] = 'c';
var str = '';
_.each(a, function(item) {
    str += item;
});
alert(str);


В разных браузерах будет разный результат.
В итоге.

each работает по разному в разных браузерах.

        var values = '';
        _.each([1,,2], function(value) {
            values += value;
        });
        alert(values);  // 1undefined2 в IE, 12 в остальных браузерах


map и filter используют each, поэтому тоже работают по разному, но даже если исправить each, map будет работать неправильно.

indexOf, lastIndexOf тоже работают неправильно.
alert(_.indexOf([1,,undefined], undefined));
Выведет 1 в IE, 2 в остальных браузерах. Хотя в IE в данном конкретном случае должен вывести -1, но это из другой оперы.
Вы послали авторам патч?
Дополнительные функции — это хорошо. А классы в JS — плохо. (да, я не про этот фреймворк, а вообще)
JS тем и прекрасен, что он class-less.
Наверное это просто непрофессиональный взгляд на javascript, но я не люблю библиотеки в принципе. Мне кажется, что при постоянном использовании вещей типа jQuery теряешь возможность практиковаться на мелочах. В итоге потом и появляются такие вот полу-шуточные комментарии как на скрине stackoverflow выше.
А почему она «вне закона»? Я лично из статьи не уловил.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.