Как написать полифилл для привязки

По сути, Polyfill - это поддержка методов, которых не было в нашем старом браузере. Я объясню, как написать собственную реализацию связывания, которая будет поддерживаться повсюду. Вот пример использования исходного метода привязки:

Во фрагменте кода метод привязки - это, по сути, метод прототипа, доступный для всех функций. Первый аргумент bind - это ссылка на объект, к которому можно получить доступ в вызывающей функции через ключевое слово this. Как только мы передадим info в качестве первого аргумента bind, свойства info будут доступны как this ключевое слово внутри функции printInfo.

Шаги по созданию собственных реализаций mybind.

Шаг 1: мы создадим функцию-прототип внутри Function prototypes. Причина создания его в качестве функции-прототипа заключается в том, что к нему нужно обращаться в каждой функции, такой как bindmethod.

Вы заметите, что строка 2 возвращает другую функцию. Поскольку в исходном методе привязки он возвращает функцию.

Шаг 2. Необходимо вернуть ссылку на вызывающую функцию. Это означает, что функция, вызывающая mybind, должна быть возвращена, и ее первый аргумент должен быть ссылкой на объект.

В этом фрагменте кода вы заметите, что mybind метод принимает ссылку на объект refObject, который передается в качестве первого аргумента вызывающей функции. Кроме того, нам нужно иметь ссылку на вызывающую функцию, которая установлена ​​в строке 2, для этого мы устанавливаем ссылку this на переменную fn

Шаг 3. Мы почти подошли к завершению, так как основной скелет готов. На следующем шаге нам нужно будет учесть аргументы, которые передаются функции (например, city). Этого можно добиться с помощью следующего фрагмента кода.

В вызывающей функции мы передаем остальные аргументы, которые передаются в функцию mybind. Мы почти закончили с реализацией.

Подождите, нам все еще нужно приспособить еще один набор аргументов, которые передаются в ссылочную функцию (i-e country). В первом фрагменте кода вы заметите, что мы вызываем callMethod('Malaysia').

Шаг 4 (последний): другой набор аргументов можно передать ссылочной функции.

В этом фрагменте кода мы включили args2 в строку 3, чтобы мы могли передать его вызывающей функции. Кроме того, в строке 4 мы изменились с call на apply. Поскольку нам нужно передавать аргументы в виде объединенного списка, а applymethod действительно имеет это условие для передачи аргументов в виде списка.

Наконец, мы закончили с нашей пользовательской mybindfunction. В нашем исходном (первом) фрагменте кода, если мы заменим bind на mybind, вы получите те же результаты.

Спасибо, что прочитали эту статью. Это помогло мне понять концепции call, apply, bind методов javascript. Надеюсь, ты чему-нибудь научился.