Дисциплины - Объектно-ориентированное программирование

ООП в JavaScript - Функции JavaScript - Метод bind()

Объекты функций могут поставляться вместе с методом bind(), который принимает объект получатель и создает функцию оболочку, вызывающую исходную функцию в качестве метода получателя.

Представим себе объект строкового буфера, хронящий строки в массиве.

var buffer = {
 entries: [],
 add: function(s){
  this.entries.push(s);
 }
}
var source = ["375", "-", "123456"];
source.forEach(buffer.add.bind(buffer));
console.log(buffer.entries);

Причем, buffer.add.bind(buffer) не преобразовывает функцию buffer.add, а создает новую. Парметр buffer является объектом-получателем с сылкой на this.

Лаконичный пример использования bind:

function f() {
  alert(this.name);
}
var user = { name: "Вася" };
var f2 = f.bind(user);
f2(); // выполнит f с this.name = “Вася”

Задача. Имеется функция, ссылающаяся на this, и производит с ссылкой на this простые арифметические действия. И объект с числом (числами). Необходимо вызвать функцию методом данного объекта.

function x(y) {
  return this.x + y
}
var o = {x:1};
var g = x.bind(o);
g(2);

Как видно из листинга, метод bind() полезен для связывания методов с получателями.

Однако существует еще один не менее полезный трюк использования bind().

Использование метода bind() для каррирования функций. Методика связывания функций с подмножеством ее аргументов известна как каррирование. Если часть атрибутов функции постоянные для каждой итерации, то это верная причина использования каррирования.

function simpleURL(protocol, domain, path){
  return protocol + "://" + domain + "/" + path;
}
var paths = ["about", "12"];
var url = paths.map(simpleURL.bind(null, "http", "obmenka.by"));
console.log(url)

Первый параметр метода bind() предоставляет значение получателя. Поскольку в simpleURL нет ссылки на this, используем null.

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться
814301 БГУИР
814302 БГУИР
814303 БГУИР
894351 БГУИР
90421 БГУИР


Изображения Видео

1. Абстрактная фабрика https://www.youtube.com/watch?v=1mVONOCxfLg
2. Фабричный метод https://www.youtube.com/watch?v=5UqUDR6_2cY
3. Шаблон декоратор https://www.youtube.com/watch?v=Lwb9bm8yKD0
4. Dessign patterns on PHP https://github.com/domnikl/DesignPatternsPHP
5. Приёмы объектно-ориентированного проектирования. Паттерны проектирования Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес; [пер. с англ.: А. Слинкин науч. ред.: Н. Шалаев]. — Санкт-Петербург [и др.] : Питер, 2014. — 366 с. : ил. ; 24 см.
6. Приемы объектно-ориентированного проектирования. Паттерны проектирования Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес; [пер. с англ.: А. Слинкин науч. ред.: Н. Шалаев]. — Санкт-Петербург [и др.] : Питер, 2014. — 366 с. : ил. ; 24 см.
7. Ajax http://erud.by/ajax
8. Ajax http://erud.by/ajax
9. Ajax http://erud.by/ajax
10. Документация Laravel http://laravel.com
Задание к курсовой работе
Задание к курсовой работе
Вопросы к экзамену