La diferencia entre los métodos de llamada, aplicación y enlace de JavaScript

Perforemos en nuestras mentes y acabemos con eso, de una vez por todas.

Estoy escribiendo este micro post porque la pregunta antes mencionada me ha perseguido durante mucho tiempo y sabía que no era el único. Cada vez que veía a alguien usar alguno de esos tres métodos, tenía que correr a MDN para averiguar qué estaba pasando.

Ya fue suficiente. Sabía que tenía que hacer algo y lo hice. Supuestamente he creado una proverbial bala de plata que puede ayudar a los nuevos desarrolladores de JavaScript.

Descargo de responsabilidad : esta no es una solución teórica, sino una forma realmente peligrosa de recordar la diferencia.

La principal causa de confusión entre los métodos call()y apply()es cómo pasar los argumentos adicionales además this. ¿Y por qué tenemos de bind()todos modos?

Así que aprendamos a distinguir fácilmente los tres.

Aplicar()

apply(this [, [arg1, arg2,...]]): Llama a una función con un thisvalor proporcionado . Se proporcionan más argumentos como una única matriz .

Forma de recordar : “ Un acepta plicar argumentos como un RRay” o “ AA

Llamada()

call(this [, arg1, arg2...]): Llama a una función con un this. Los argumentos adicionales se proporcionan como una lista separada por comas

Formas de recordar: “Los argumentos de la llamada están separados por comas” o “ CC ”.

Enlazar()

bind(this): Devuelve una nueva función cuyo thisvalor está vinculado al valor proporcionado.

Formas de recordar: bind () es el único método de los tres que devuelve una nueva función por completo. No llama a la función.

Envolver

Espero que la explicación anterior pueda ayudar a algunos de ustedes. Ciertamente me está ayudando.

¿Tienes otros trucos de memorización relacionados con la programación? Por favor, compártelo con la comunidad, ya que ayudará a todos. Especialmente durante esas entrevistas.

Si tienes alguna consulta o duda, contáctame en Twitter @ rajat1saxena o escríbeme a [email protected]. Recomiende esta publicación, si le gustó, y compártala con su red.