Я хочу создать Polyfill для функции привязки javascript для браузера, который не поддерживает функцию привязки. Кто-нибудь, расскажите, пожалуйста, как реализована функция привязки в javascript.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В простейшей форме bind - это просто оболочка для apply:
function bind(fn, thisObj) {
return function() {
return fn.apply(thisObj, arguments);
}
}
Реализованы базовые функции привязки с помощью apply. Я назвал этот метод myBind, добавил его в прототип функции, чтобы он был доступен любой функции:
Реализация функции
Function.prototype.myBind = function() {
const callerFunction = this;
const [thisContext, ...args] = arguments;
return function() {
return callerFunction.apply(thisContext, args);
}
}
Использование: Может использоваться как встроенная функция связывания с учетом контекста и аргументов.
function testMyBind(favColor) {
console.info(this.name, favColor); // Test, pink
}
const user = {
name: 'Test'
}
const bindedFunction = testMyBind.myBind(user, 'pink');
bindedFunction();
Для простоты при использовании современного JavaScript:
Function.prototype.bind = function () {
return () => this.call(...arguments);
};
Вот и все.