Problem
Enhance all functions to have the bindPolyfill
method. When bindPolyfill
is called with a passed object obj
, that object becomes the this
context for the function.
For example, if you had the code:
|
|
The output would be "My context is undefined"
. However, if you bound the function:
|
|
The output should be "My context is My Object"
.
You may assume that a single non-null object will be passed to the bindPolyfill
method.
Please solve it without the built-in Function.bind
method.
Examples
Example 1:
|
|
Example 2:
|
|
Constraints:
obj
is a non-null object0 <= inputs.length <= 100
Can you solve it without using any built-in methods?
Solution
Method 1 – Polyfill Using Closure
Intuition
We can add a method to Function.prototype
that returns a new function. When called, this new function invokes the original function with the provided object as this
using Function.prototype.apply
.
Approach
- Define
Function.prototype.bindPolyfill
as a function that takes an object and returns a new function. - The returned function, when called, invokes the original function with the given object as
this
and passes along any arguments. - Do not use the built-in
Function.prototype.bind
.
Code
|
|
Complexity
- ⏰ Time complexity:
O(1)
(binding is constant time) - 🧺 Space complexity:
O(1)