Методът 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 ()