Метод bind () функції JavaScript дозволяє об'єкту позичати метод у іншого об'єкта без копіювання.
Синтаксис bind()
методу:
func.bind(thisArg, arg1,… argN)
Тут func
є функція.
bind () Параметри
bind()
Метод приймає в:
thisArg
- Значення, надане якthis
параметр дляfunc
. Це ігнорується, якщо зв’язана функція створюється за допомогою нового оператора.arg1,… argN
(необов’язково) - Аргументи, що додаються до аргументів, наданих пов’язаній функції під час викликуfunc
.
Примітки:
- При використанні thisArg всередині setTimeout примітивні значення перетворюються в об'єкти.
- Якщо
thisArg
не вказано, це з виконуючої області обробляється якthisArg
.
Повернути значення з bind ()
- Повертає копію заданої функції із зазначеним цим значенням та початкові аргументи (якщо передбачені).
Приклад: Використання bind ()
this.x = 1; // "this" here is the global window object in browser const obj = ( x: 100, getX: function () ( return this.x; ), ); console.log(obj.getX()); // 100 const retrieveX = obj.getX; // the function gets invoked at the global scope console.log(retrieveX()); // 1 // Create a new function with 'this' bound to obj // global variable 'x' with obj's property 'x' are two separate entities const boundGetX = retrieveX.bind(obj); console.log(boundGetX()); // 100
Вихідні дані
100 1 100
Як тільки метод передається десь окремо від об'єкта - this
він втрачається. Створення зв’язаної функції з функції, використовуючи оригінальний об’єкт, акуратно вирішує цю проблему
Рекомендуємо прочитати: Виклик функції JavaScript ()