Реализация функции привязки Javascript - PullRequest
0 голосов
/ 27 октября 2018

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

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Реализован базовый функционал связывания с помощью apply. Я вызвал этот метод myBind , добавил его в прототип функции, чтобы он был доступен любой функции:

Реализация функции

Function.prototype.myBind = function() {
const callerFunction = this;
const [thisContext, ...args] = arguments;
return function() {
    return callerFunction.apply(thisContext, args);
}

}

Использование: Может использоваться в качестве встроенной функции связывания с учетом контекста и аргументов.

function testMyBind(favColor) {
   console.log(this.name, favColor); // Test, pink
}

const user = {
   name: 'Test'
}

const bindedFunction = testMyBind.myBind(user, 'pink');
bindedFunction();
0 голосов
/ 27 октября 2018

В простейшем виде bind - это просто оболочка для apply:

function bind(fn, thisObj) {
  return function() {
    return fn.apply(thisObj, arguments);
  }
}
...