Function.bind()

Function.bind() - створює для заданої функції нову функцію яка є прив'язаною.

Синтаксис:

function.bind(thisObj [,par1, par2, ...])

Параметри:

function - об'єкт функції (ім'я функції).

thisObj - значення яке передається this.

par1, par2 - параметри які передаються функції.

Опис:

bind() метод об'єкта Function який створює нову прив'язану функцію до об'єкта thisObj.

Метод є подібний до Function.call(). Різниця в тому що Function.call() викликає функцію, тоді як bind() повертає нову функцію в якій this буде вказаний параметр thisObj.

Приклад:

function test(x){ return this.value+x; } var ob={value:3}; var newFun= test.bind(ob); alert(newFun(3)); Приклад коли необхідно викликати метод об'єкта через заданий час і щоб this був прив'язаний до об'єкту.

Метод test() показує що this буде window, а в методі test2() за допомогою метода bind() об'єктом this є F.

function F(){ this.test=function(){ setTimeout(function(){alert('this = '+this);},500); //this буде об'єкт windows }; this.test2=function(){ setTimeout(function(){alert('this = '+this);}.bind(this),500); //this буде посилання на об'єкт F } } var ob=new F(); ob.test(); //window ob.test2(); //ob