Javascript
.bind() vs .call() vs .apply()

Difference between .bind and .call and .apply

.call takes in comma-separated arguments as the next arguments

.apply takes in an array of arguments as the next argument

function add(a, b) {
  return a + b;
}
 
console.log(add.call(null, 1, 2)); // 3
console.log(add.apply(null, [1, 2])); // 3

.bind is useful for binding the value of this that we want to pass to other functions, note that .bind does not execute the function, it returns a copy of the bound function

const person = {
  name: "John",
};
 
function sayHi() {
  console.log(`Hi, my name is ${this.name}`);
}
 
console.log(sayHi.bind(person)); // function
console.log(sayHi.call(person)); // Hi, my name is John

References