Método bind

El método bind permite vincular un contexto a una función. Como primer parámetro se debe pasar el contexto, y como parámetros siguientes - los parámetros de la función. El método devuelve una nueva función, dentro de la cual this será igual al contexto pasado.

Sintaxis

javascriptfunción.bind(contexto, parámetro1, parámetro2...);

Ejemplo

Supongamos que tenemos un input:

html<input id="elem" value="text">

Supongamos que la referencia a este input está guardada en la variable elem:

javascriptlet elem = document.querySelector('#elem');

Supongamos que también tenemos la siguiente función func:

javascriptfunction func(param1, param2) {
  console.log(this.value + param1 + param2);
}

Vamos a usar bind para crear una nueva función, que será una copia de la función func, pero this en ella siempre será igual a elem:

javascriptlet newFunc = func.bind(elem);

Ahora en la variable newFunc hay una función. Vamos a llamarla, pasando en el primer parámetro '1', y en el segundo '2':

javascriptnewFunc('1', '2');

Vamos a juntar todo:

javascriptlet elem = document.getElementById('elem');

function func(param1, param2) {
  console.log(this.value + param1 + param2);
}

let newFunc = func.bind(elem);
newFunc('1', '2'); // mostrará 'text12'

Ejemplo

No es necesario guardar el resultado del trabajo de bind en una nueva función newFunc, se puede simplemente sobrescribir func:

javascriptlet func = func.bind(elem);

Véase también

  • método call,
    que llama a una función con contexto
  • método apply,
    que llama a una función con contexto