Los 3 métodos le permiten establecer el contexto (esto) y proporcionar argumentos a las funciones.
Use .bind () cuando desee que esa función se llame más tarde con un determinado contexto, útil en eventos. .bind () devolverá una función que luego podrá invocar. Ya tendrá su contexto establecido, así como algunos o todos sus argumentos.
función saludar (género, edad, nombre) { // si es hombre, use Sr., de lo contrario use Sra. saludo var = género === "hombre"? "Sr Sra. "; si (edad> 25) { devuelve "Hola", + saludo + nombre + "."; } más { devuelve "Hey", + nombre + "."; } } var greetAnAdultMale = greet.bind (nulo, "masculino", 45); GreetAnAdultMale ("John Hartlove"); // "Hola, señor John Hartlove". var greetAYoungster = greet.bind (nulo, "", 16); greetAYoungster ("Alex"); // "Hola, Alex". greetAYoungster ("Emma Waterloo"); // "Hola, Emma Waterloo".
El código anterior muestra cómo puede curry una función, también conocida como aplicación de función parcial , es el uso de una función (que acepta uno o más argumentos) que devuelve una nueva función con algunos de los argumentos ya establecidos. La función que se devuelve tiene acceso a los argumentos y variables almacenados de la función externa.
- ¿Cuál es la mejor configuración para implementar una aplicación Rails 5 en un servidor Windows? ¿Es más fácil si la aplicación está construida con JRuby?
- ¿Qué significa 'apilar' dentro de la programación?
- Cómo construir un sitio web como Zillow
- ¿Qué debo aprender PHP o ASP.NET?
- ¿Cuáles son los conceptos básicos que debe saber para aprender React.js y cuáles son los mejores lugares y prácticas de desarrollo?
Use .call () o .apply () cuando desee invocar la función de inmediato, y modifique el contexto. La diferencia entre .call () y .apply () es la forma en que les pasa los parámetros. . apply () nos permite ejecutar una función con una matriz de parámetros, de modo que cada parámetro se pasa a la función individualmente cuando se ejecuta la función, ideal para funciones variadas ; una función variadica toma un número variable de argumentos, no un número establecido de argumentos como lo hacen la mayoría de las funciones.
var clientData = { id: 094545 fullName: "No establecido", // setUserName es un método en el objeto clientData setUserName: function (firstName, lastName) { // esto se refiere a la propiedad fullName en este objeto this.fullName = firstName + "" + lastName; } } función getUserInput (firstName, lastName, callback, callbackObj) { // El siguiente método de aplicación establecerá el valor "this" en callbackObj callback.apply (callbackObj, [nombre, apellido]); }
El método Apply establece este valor en callbackObj. Esto nos permite ejecutar la función de devolución de llamada con este valor establecido explícitamente, por lo que los parámetros pasados a la función de devolución de llamada se establecerán en el objeto clientData:
// El método Apply utilizará el objeto clientData para establecer el valor "this" getUserInput ("Barack", "Obama", clientData.setUserName, clientData); // la propiedad fullName en clientData se configuró correctamente console.log (clientData.fullName); // Barack Obama
Fuentes:
Los métodos de aplicación, llamada y enlace de JavaScript son esenciales para los profesionales de JavaScript
¿Javascript call () y apply () vs bind ()?