DEV Community

Cover image for Polyfill for Bind()
Chiranjit Dey
Chiranjit Dey

Posted on

Polyfill for Bind()

In the dynamic world of JavaScript development, ensuring cross-browser compatibility is paramount. One essential tool in achieving this is the bind() method. However, older browsers might not fully support it. This is where polyfills come to the rescue.

A polyfill is essentially a piece of code that provides functionality not natively supported by the older browser. In this case, we'll delve into creating a polyfill for the bind() method to ensure your code works seamlessly across different environments.

Let's explore how to build this crucial polyfill.

Definition : The Bind() method basically allows an object to borrow a method from another object without copying.

Here is a step by step breakdown, of the Bind polyfill.

Polyfill for Bind

  1. Ln:1, Person is an object, that has the "name" property and printAge as a function property. PrintAge here prints the name and age.

  2. Ln:8, Person2 is simply another object that has the "name" property but no printAge function.

  3. Ln: 22, In this line, we call the myBind function (which is a polyfill) and store the result in a variable named "bindFunc".

  4. Ln 12, this is where we write the polyfill for our myBind method. In this function, we take the Object we want to append the myBind method to and other arguments. Since a lot of arguments can be passed, so we basically target all arguments using the "...args".

  5. Next we check if the type of "this", which is the "printAge" function here is a function or not, if not we throw an error, else we assign the function to the obj (person2) as "obj.fn" that is being passed to us as a parameter in our myBind function. But since "bind" method returns a function that gets invoked separately, so here also we return the function with "...args2" as arguments, this is to mean that we can pass extra arguments to it also, that are not supposed to be passed through the polyfill.

  6. Ln 18, we pass all the arguments to our printAge function. Now it has all that is required and can function just like the bind method.

Note: Instead of sending the age = 35 in the myBind method invoke (Ln 22), we can pass it as an argument to the bindFunc(35) as well, this is why we are taking the "...args2", to handle extra parameters or arguments.

If you like this explanation, let's connect on Twitter or LinkedIn and if you have any feedback, let me know in the comments. Would really help.

Twitter
LinkedIn

Top comments (0)