
Daniel Hernández
PreguntaPara que sirven y en que casos se utilizan .call(), .apply() y .bind()

Sergio Daniel Xalambrí
En JS todas las funciones tiene métodos (las funciones son objetos), estos son call, apply y bind.
bind recibe un único argumento y devuelve una nueva función cuyo valor de this es el que se le pase a bind.
apply recibe dos argumentos, el primero al igual que bind es usado como this, el segundo es un array donde cada elemento del mismo es usado como argumento para ejecutar la función que estamos usando.
call es como apply, pero en vez de un array recibe n argumentos.
Ejemplo:
// supongamos que tenemos esta función
function myFunction(n1, n2) {
return this + n1 + n2;
}
// creamos una nueva función donde this es igual a 1
const myBindedFunction = myFunction.bind(1);
// esta función devuelve 6, ya que this es 1 y le sumamos 2 y 3
const bindResult = myBindedFnuction(2, 3);
// al usar apply this es igual a 1, además pasamos que el primer y segundo argumentos son 2 y 3
const applyResult = myFunction.apply(1, [2, 3]);
// lo mismo que con apply, pero en vez de un array pasamos los valores por separado
const callResult = myFunction.call(1, 2, 3);