Polyfill is essentially back support of methods that our old browser doesn’t have. I will explain how to write a custom implementation of bind which will be supported everywhere. Here is the use-case of the original bind method:
In the code snippet, the bind method is basically a prototype method that is available to all functions. The first argument of bind is the reference to an object which can be accessed in the calling function through
this keyword. Once we pass
info as the first argument of bind, then properties of
infowould be accessed as
this keyword inside
Steps to create our own implementations of
Step 1: We will create a prototype function inside Function prototypes. The reason for creating it as a prototype function is because it needs to be accessed in every function like
You will notice line 2 is returning another function. Since in the original bind method, it's returning a function.
Step 2: It needs to return a reference to a calling function. This means function that is calling
mybind needs to be returned and its first argument should be the reference to an object.
In this code snippet, you will notice
mybind method is accepting a reference to an object
refObject which is being passed as the first argument to the calling function. Also, we need to have a reference of the calling function which is set in line 2, for that we are setting reference of
this to a variable
Step 3: We are nearly there with our completion since the basic skeleton is done. In the next step, we will have to accommodate the arguments which are passed to a function (like
city). This can be achieved through the following code snippet.
In the calling function, we are passing the rest of the arguments which are being passed in the
mybind function. We are almost done with the implementation.
Hold on, we still need to accommodate another set of arguments that are being passed to the reference function(i-e
country). In the first code snippet, you will notice we are calling
Step 4 (last one): Another set of arguments could be passed to the reference function.
In this code snippet, we have included
args2 in line 3 so that we can pass it to the calling function. Also, in line 4, we have changed from
apply. Since we need to pass arguments as a combined list and
applymethod does have this is provision to pass arguments as a list.
Finally, we are done with our custom
mybindfunction. In our original (first one) code snippet, if we replace
mybind, you will get the same results.
Thanks for reading this article. This has helped me to understand the concepts of