Entendiendo y usando Function.prototype.bind() en JavaScript
Aprende a controlar el contexto de ‘this’ en tus funciones con bind()
Function.prototype.bind() es un método en el lenguaje de programación
Ejemplo 1: Crear un método personalizado
function suma(a, b) {
return a + b;
}
const sumaPersonalizada = Function.prototype.bind(null, suma);
console.log(sumaPersonalizada(1, 2)); // 3
En este ejemplo, creamos una función `suma` que toma dos parámetros y devuelve su suma. Luego, utilizamos `Function.prototype.bind()` para crear un método personalizado llamado `sumaPersonalizada`. Este nuevo método se comporta de la misma manera que la función original `suma`, pero ahora puede ser llamado con menos parámetros, ya que el primer parámetro se ha «enlazado» con la función original.
Ejemplo 2: Crear un método de objeto personalizado
const persona = {
nombre: 'Juan',
apellido: 'Perez'
};
const getNombrePersona = Function.prototype.bind(persona, 'nombre');
console.log(getNombrePersona()); // Juan
En este ejemplo, tenemos un objeto `persona` con dos propiedades: `nombre` y `apellido`. Utilizamos `Function.prototype.bind()` para crear un método personalizado llamado `getNombrePersona`, que devuelve el nombre de la persona. El primer parámetro se ha enlazado con la propiedad `nombre` del objeto `persona`.
Ejemplo 3: Pasar contexto a una función
const saludo = 'Hola, ¿cómo estás?';
function mostrarSaludo(contexto) {
return contexto;
}
const saludoPersonalizado = Function.prototype.bind(mostrarSaludo, saludo);
console.log(saludoPersonalizado()); // Hola, ¿cómo estás?
En este ejemplo, tenemos una cadena `saludo` que contiene un mensaje. Utilizamos `Function.prototype.bind()` para crear un método personalizado llamado `saludoPersonalizado`, que devuelve el saludo almacenado en la variable `saludo`. El primer parámetro se ha enlazado con la función `mostrarSaludo`, y el segundo parámetro es el contexto a utilizar.
Ejemplo 4: Currying
function suma(a, b, c) {
return a + b + c;
}
const currySuma = Function.prototype.bind();
const sumaCurry1 = currySuma(suma, 1);
const sumaCurry2 = currySuma(sumaCurry1, 2);
console.log(sumaCurry2(3)); // 6
En este ejemplo, tenemos una función `suma` que toma tres parámetros y devuelve su suma. Utilizamos `Function.prototype.bind()` junto con el patrón de programación llamado currying para crear un método personalizado llamado `sumaCurry1`, que espera un segundo parámetro. Luego, creamos otro método personalizado llamado `sumaCurry2`, que espera un tercer parámetro y devuelve el resultado de la suma.
Conclusión
Function.prototype.bind() es una herramienta valiosa para los desarrolladores de
- bind() para manejar eventos de usuario
- bind() para controlar el contexto de ‘this’ en llamadas asíncronas
- bind() para crear funciones reutilizables con diferentes contextos

