Использование метода JavaScript 'bind' - PullRequest
515 голосов
/ 10 февраля 2010

Какая польза от bind() в JavaScript?

Ответы [ 13 ]

3 голосов
/ 09 июля 2014
/**
 * Bind is a method inherited from Function.prototype same like call and apply
 * It basically helps to bind a function to an object's context during initialisation 
 * 
 * */

window.myname = "Jineesh";  
var foo = function(){ 
  return this.myname;
};

//IE < 8 has issues with this, supported in ecmascript 5
var obj = { 
    myname : "John", 
    fn:foo.bind(window)// binds to window object
}; 
console.log( obj.fn() ); // Returns Jineesh
2 голосов
/ 14 июня 2013

Функция bind создает новую функцию с тем же телом функции, что и вызываемая функция. Она вызывается с аргументом this. Почему мы используем связывание fun. : когда каждый раз создается новый экземпляр и нам нужно использовать первый начальный экземпляр, мы используем привязку fun. Мы не можем переопределить привязку fun. просто она хранит начальный объект класса.

setInterval(this.animate_to.bind(this), 1000/this.difference);
0 голосов
/ 13 апреля 2018

bind - это функция, которая доступна в прототипе java-скрипта, так как имя предполагает, что bind используется для привязки вашего вызова функции к контексту, с которым вы имеете дело, например:

    var rateOfInterest='4%';
    var axisBank=
    {
    rateOfInterest:'10%',
    getRateOfInterest:function()
    {
    return this.rateOfInterest;
    }
    }
    axisBank.getRateOfInterest() //'10%' 


    let knowAxisBankInterest=axisBank.getRateOfInterest // when you want to assign the function call to a varaible we use this syntax
    knowAxisBankInterest(); // you will get output as '4%' here by default the function is called wrt global context

let knowExactAxisBankInterest=knowAxisBankInterest.bind(axisBank);     //so here we need bind function call  to its local context


    knowExactAxisBankInterest() // '10%' 
...