Задать вопрос
@MrDrap

Что делает функция?

Что делает эта функция? Для чего ее использовать? Напишите пожалуйста пример с ее использованием.
Что то не очень понимаю

function bind( method, context) {
var args = Array.prototype.slice.call(arguments,2);
return function () {
var a = args.concat(Array.prototype.slice.call(arguments,0));
return method.apply(context, a); 
}
}


Понял, что у args мы убираем первые два элемента. В а складываем все параметры из новой функции + отрезанные, затем возвращаем вызов с новыми аргументами
  • Вопрос задан
  • 230 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
Delgus
@Delgus
аналог bind для IE8- и старых версий других браузеров. Но лучше наверно использовать полифилл -
https://developer.mozilla.org/ru/docs/Web/JavaScri...
Ну или использовать библиотеку - es5-shim.js

про call, apply и bind - можно здесь почитать например
https://getinstance.info/articles/javascript/call-...

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


function bind( method, context) {
    //удаляем первые два аргумента - method,context
    var args = Array.prototype.slice.call(arguments,2);
    
    return function () {
    //те аргументы которые добавлены в method через bind остаются + добавляем те 
    //  которые при вызове функции добавлены
    var a = args.concat(Array.prototype.slice.call(arguments,0));
    //возвращаем функцию method, где контекст вызова(this) - context 
    return method.apply(context, a); 
    }
  }
    
  function getThisAndParams(...a){
    console.log(this);
    a.forEach(function(el){
      console.log(el);
    });
  }
 
 var arr = [2,3,6,8];
 var method1 = bind(getThisAndParams,arr);
 method1('hello','world','Vasya'); //выведет массив arr и "Hello" "world" "Vasya"
 var method2 = bind(getThisAndParams,arr,'Yo yo yo');
 method2('hello','world','Vasya'); //выведет массив arr и 'Yo yo yo' 'hello' 'world' 'Vasya'


Зачем на практике использовать такое - вам лучше знать, вы же нашли эту функцию.
Но на мой взгляд все эти танцы с бубнами устарели с появлением стрелочных функций
https://developer.mozilla.org/ru/docs/Web/JavaScri...

Но так как вы судя по всему не понимаете что такое контекст вызова функции то ловите
https://www.youtube.com/watch?v=LM0tW2MZJZ4
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы