Обзор
Underscore.js - очень худой библиотека, только сжатие 4 КБ. Он предоставляет десятки методов функционального программирования, которые значительно облегчает программирование JavaScript. MVC Framework Backbone.js основан на этой библиотеке.
Он определяет объект подчеркивания (_), и все методы библиотеки функций принадлежат этому объекту. Эти методы могут быть примерно разделены на пять категорий: сбор, массив, функция, объект и утилита.
Установите под node.js
Underscore.js может использоваться не только в средах браузеров, но и в Node.js. Команда установки заключается в следующем:
Кода -копия выглядит следующим образом:
NPM Установка подчеркивается
Однако node.js не может использовать _ непосредственно в качестве имени переменной, поэтому вам необходимо использовать underscore.js, используя следующий метод.
Кода -копия выглядит следующим образом:
var u = require ("подчеркивается");
Методы, связанные с коллекциями
Сбор данных языка JavaScript, включая две структуры: массивы и объекты. Следующий метод применим к обеим структурам.
карта
Этот метод выполняет некоторую операцию для каждого члена коллекции по очереди и хранит возвращенные значения в новом массиве.
Кода -копия выглядит следующим образом:
_.map ([1, 2, 3], function (num) {return num * 3;}); // [3, 6, 9] _.map ({One: 1, два: 2, три: 3}, функция (num, key) {return num * 3;}); // [3, 6, 9]
Каждый
Этот метод похож на карту, выполняя некоторую операцию на каждом элементе набора в последовательности, но не возвращает значение.
Кода -копия выглядит следующим образом:
_. _.
Уменьшать
Этот метод выполняет некоторую операцию по каждому члену набора в последовательности, а затем накапливает результаты операции при определенном начальном значении. После того, как все операции завершены, накопленное значение возвращается.
Этот метод принимает три параметра. Первый параметр - это набор для обработки, второй параметр - это функция, которая работает на каждом элементе, а третий параметр - это переменная, используемая для накопления.
_.reduce ([1, 2, 3], function (memo, num) {return memo + num;}, 0); // 6
Вторым параметром метода уменьшения является функция операции, которая сама принимает два параметра. Первая - это переменная, используемая для накопления, а вторая - это значение каждого члена набора.
Фильтр и отвергнуть
Метод фильтра выполняет некоторую операцию по каждому члену коллекции по очереди, и возвращает только участников, чей результат работы верно.
Кода -копия выглядит следующим образом:
_.filter ([1, 2, 3, 4, 5, 6], function (num) {return num % 2 == 0;}); // [2, 4, 6]
Метод отклонения возвращает только участников, результат работы которых неверно.
Кода -копия выглядит следующим образом:
_.reject ([1, 2, 3, 4, 5, 6], function (num) {return num % 2 == 0;}); // [1, 3, 5]
Каждый и некоторые
Каждый метод выполняет некоторую операцию на каждом члене коллекции по очереди. Если результат операции всех участников верен, он возвращает True, в противном случае он возвращает false.
Кода -копия выглядит следующим образом:
_ // ЛОЖЬ
Некоторый метод возвращает истинность до тех пор, пока существует результат работы участника, в противном случае неверно.
Кода -копия выглядит следующим образом:
_.some ([1, 2, 3, 4, 5, 6], функция (num) {return num % 2 == 0;}); // истинный
Находить
Этот метод выполняет некоторую операцию на каждом члене набора в последовательности, возвращая члена, чей первой результат работы верно. Если результат операции всех членов является ложным, не определено возвращено.
Кода -копия выглядит следующим образом:
_.find ([1, 2, 3, 4, 5, 6], функция (num) {return num % 2 == 0;}); // 2
содержит
Если значение находится в наборе, метод возвращает true, в противном случае он возвращает false.
Кода -копия выглядит следующим образом:
_.contains ([1, 2, 3], 3); // истинный
графби
Этот метод выполняет некоторую операцию по каждому члену набора в последовательности, подсчитывает члены с тем же результатом операции, что и класс, и, наконец, возвращает объект, указывая количество членов, соответствующих каждому результату операции.
Кода -копия выглядит следующим образом:
_.countby ([1, 2, 3, 4, 5], function (num) {return num % 2 == 0? '' даже ':' add ';}); // {нечетное: 3, даже: 2}
перетасовать
Этот метод возвращает коллекцию неупорядоченного порядка.
Кода -копия выглядит следующим образом:
_.shuffle ([1, 2, 3, 4, 5, 6]); // [4, 1, 6, 3, 5, 2]
размер
Этот метод возвращает количество членов коллекции.
Кода -копия выглядит следующим образом:
_.size ({One: 1, два: 2, три: 3}); // 3
Связанные с объектом методы
Toarray
Этот метод преобразует объект в массив.
Кода -копия выглядит следующим образом:
_.toarray ({a: 0, b: 1, c: 2}); // [0, 1, 2]
смазывать
Этот метод извлекает значение свойства нескольких объектов в массив.
Кода -копия выглядит следующим образом:
var standes = [{name: 'moe', возраст: 40}, {name: 'larry', age: 50}, {name: 'curly', возраст: 60}]; _.pluck (Stooges, 'name'); // ["moe", "Larry", "Curly"]
Методы, связанные с функциями
связывать
Этот метод связывает контекст времени выполнения функции и возвращает в качестве новой функции.
Кода -копия выглядит следующим образом:
_.Bind (функция, объект, [*аргументы])
Пожалуйста, смотрите пример ниже.
Кода -копия выглядит следующим образом:
var o = {p: 2, m: function () {console.log (p);}}; om () // 2 _.bind (om, {p: 1}) () // 1
БИНДАЛЛ
Этот метод связывает все методы объекта (если не указано иное) с этим объектом.
Кода -копия выглядит следующим образом:
var buttonview = {label: 'underscore', onclick: function () {alert ('clicked:' + this.label); }, onhover: function () {console.log ('hovering:' + this.label); }}; _.bindall (Buttonview);
частично
Этот привязку метода связывает функцию с параметрами и возвращает в качестве новой функции.
Кода -копия выглядит следующим образом:
var add = function (a, b) {return a + b; }; add5 = _.partial (add, 5); add5 (10); // 15
записать
Этот метод кэширует результаты работы функции для параметра.
Кода -копия выглядит следующим образом:
var fibonacci = _.memoize (function (n) {return n <2? n: fibonacci (n - 1) + fibonacci (n - 2);});
Если функция имеет несколько параметров, необходимо предоставить хэшфункцию для генерации хэш -значения, которое идентифицирует кэш.
задерживать
Этот метод может задержать функцию в течение указанного времени перед запуском.
Кода -копия выглядит следующим образом:
var log = _.bind (console.log, console); _.delay (log, 1000, 'зарегистрировано позже'); // 'зарегистрировано позже'
погашение
Этот метод может отложить функцию до тех пор, пока количество задач, подлежащих выполнению, не будет 0 перед запуском, аналогично эффекту установки, задерживающего запуск на 0 секунд.
Кода -копия выглядит следующим образом:
_.defer (function () {alert ('deferred');});
дроссельная заслонка
Этот метод возвращает новую версию функции. При постоянном вызове этой новой версии функции вы должны ждать определенный период времени, прежде чем будет вызвано следующее выполнение.
Кода -копия выглядит следующим образом:
// Возврат новой версии функции UpdatePosition var tolottled = _.Throttle (UpdatePosition, 100); // новая версия функции будет только запустить $ (window) .scroll (дроссельный);
Дебайт
Этот метод также возвращает новую версию функции. Каждый раз, когда называется эта новая версия функции, она должна быть определенным временным интервалом из последнего вызова, в противном случае она будет недействительной. Его типичное приложение-предотвращение двойного щелчка пользователя кнопки, что приведет к двум представлениям форм.
Кода -копия выглядит следующим образом:
$ («кнопка»). On («Нажмите», _.debounce (OpportForm, 1000));
один раз
Этот метод возвращает новую версию функции, так что функцию можно запустить только один раз. В основном используется для инициализации объекта.
Кода -копия выглядит следующим образом:
var initiaze = _.once (createApplication); инициализировать (); инициализировать (); // Приложение создается только один раз
После
Этот метод возвращает новую версию функции, которая будет запущена только после того, как ее называют определенным количеством раз. В основном он используется для подтверждения того, что набор операций завершается до реагирования.
Кода -копия выглядит следующим образом:
var rendernotes = _.fter (notes.length, render); _. // все заметки сохраняются, rendernote будет работать один раз
сворачивать
Этот метод передает одну функцию в качестве параметра в другую функцию и, наконец, возвращает новую версию первого.
Кода -копия выглядит следующим образом:
var hello = function (name) {return "hello:" + name; }; hello = _.wrap (hello, function (func) {return "до" + func ("moe") + ", после";}); привет(); // 'Раньше, привет: Мо, после'
сочинять
Этот метод принимает серию функций в качестве параметров, выполняется от спина к вперед, и используемый результат предыдущей функции используется в качестве запущенного параметра следующей функции. То есть преобразовать форму f (g (), h ()) в f (g (h ())).
Кода -копия выглядит следующим образом:
var Greet = function (name) {return "hi:" + name; }; var excem = function (оператор) {return ratement + "!"; }; var Welcome = _.compose (восклицание, приветствие); Добро пожаловать ('moe'); // 'Привет: Мо!
Инструменты и методы
шаблон
Этот метод используется для компиляции шаблонов HTML. Он принимает три параметра.
Кода -копия выглядит следующим образом:
_.template (TemplateString, [data], [Настройки])
Значения трех параметров следующие:
Templatestring: шаблон строка
Данные: введите данные шаблона
Настройки: настройки
температура
TemplateString шаблона Templatestring - это обычный HTML -язык, где переменные вставляются в форме < %=… %>; Объект данных отвечает за предоставление значения переменной.
Кода -копия выглядит следующим образом:
var txt = "
< %= слово %>
Кода -копия выглядит следующим образом:
"; _.template (txt, {word:" hello world "}) //"
Привет, мир
Кода -копия выглядит следующим образом:
"
Если значение переменной содержит пять специальных символов (& <> ”' /), ее нужно избежать < %-… %>.
Кода -копия выглядит следующим образом:
var txt = "
< %- слово %>
Кода -копия выглядит следующим образом:
"; _.template (txt, {word:" h & w "}) //
H & W.
Команды JavaScript могут быть вставлены в форме < %… %>. Ниже приведен пример утверждения суждения.
Кода -копия выглядит следующим образом:
var txt = "< %var i = 0; if (i <1) { %>" + "< %= word %>" + "< %} %>"; _.template (txt, {word: "hello world"}) // hello world
Общее использование включает в себя операторы цикла.
Кода -копия выглядит следующим образом:
var list = "< % _.each (people, function (name) { %>
<%= name%> <%}); %> ";
Мо
кудрявый
Ларри »
Если метод шаблона имеет только первое параметр Templatestring, а второй параметр опущен, тогда будет возвращена функция, и данные могут быть введены в эту функцию в будущем.
Кода -копия выглядит следующим образом:
var t1 = _.template ("hello <%= user%>!"); T1 ({user: ""}) // 'Привет!
данные
Все переменные в Templatestring являются внутренне атрибутами объекта OBJ, а объект OBJ относится ко второму объекту данных параметра. Следующие два предложения эквивалентны.
Кода -копия выглядит следующим образом:
_.template ("hello <%= user%>!", {user: ""}) _.template ("hello <%= obj.user%>!", {user: ""})
Если вы хотите изменить имя объекта OBJ, вам нужно установить его в третьем параметре.
Кода -копия выглядит следующим образом:
_.template ("< %if (data.title) { %> Название: < %= title %> < %} %>", null, {variable: "data"});
Поскольку шаблон использует с операторами внутренне при замене переменных, приведенный выше метод будет работать быстрее.