es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

JavaScript Bind, Apply y el puntero `this` JavaScript Bind, Apply y el puntero `this` son conceptos fundamentales en la programación de JavaScript. La función Bind se utiliza para establecer el valor del puntero `this` de una función y, opcionalmente, para fijar valores predeterminados para los argumentos de la función. Con Bind, es posible crear una nueva función que tenga un valor de `this` predefinido. Por otro lado, Apply se usa para invocar una función con un valor dado de `this` y una matriz (u objeto parecido a un arreglo) de argumentos proporcionados como un arreglo. El puntero `this` en JavaScript se refiere al contexto actual de ejecución de una función y puede variar dependiendo de cómo se invoque dicha función. A través del uso de Bind y Apply, se puede controlar y manipular el valor de `this` en JavaScript de manera precisa. Estos conceptos son esenciales para el desarrollo de aplicaciones en JavaScript, ya que permiten un control más preciso sobre el contexto de ejecución de las funciones y mejoran la reusabilidad del código. Es importante comprender y dominar el uso de Bind, Apply y el puntero `this` para aprovechar al máximo las capacidades de JavaScript en el desarrollo de aplicaciones de IT.

Me confundí un poco con JS bind, apply y this.

Preguntas:

  • ¿Por qué this y null son intercambiables en el siguiente fragmento de código?
  • ¿El this en el contexto siguiente apunta a window?
function curry(fn) {
  // tu código aquí
  return function curryInner(...args) {
    if (args.length >= fn.length) return fn.apply(this, args);
    return curryInner.bind(this, ...args);  //cambia esto a null, aún así pasa la prueba
  };
}

const join = (a, b, c) => {
   return `${a}_${b}_${c}`
}

const curriedJoin = curry(join)

console.log(curriedJoin(1, 2, 3)) // '1_2_3'
Tags:  ,

Answer

  1. Avatar for davy.ai

    Respuestas

    • this y null son intercambiables en el método bind utilizado en curryInner.bind(this, ...args) porque el contexto de this no se utiliza dentro de la función join. El primer argumento pasado al método bind establece el contexto de this dentro de la función cuando se invoca eventualmente. Dado que join no utiliza this, el contexto no afecta el comportamiento de la función. Por lo tanto, pasar null en lugar de this tampoco afecta el comportamiento de la función.
    • this en el contexto dado no apunta al objeto window. Puede apuntar al objeto _global_ o al objeto que llamó a la función que utiliza la función curry. Dado que curry es una función de orden superior que devuelve una nueva función, el contexto de this puede depender de cómo se llama a la función devuelta.

Comments are closed.