Diferencia entre Function.prototype.apply y Function.prototype.call

JavaScript trata todo como un objeto, incluso las funciones, y cada objeto tiene sus propias propiedades y métodos. Los objetos de función tienen métodos apply() y call() en ellos. Sin embargo, existe confusión acerca de las dos funciones en JavaScript. La principal diferencia entre ellos es cómo manejan los argumentos de función. No hay diferencia entre estas dos funciones en cómo se pasan los argumentos a la función llamada, pero la definición dentro de la función es diferente. 

Además del primer parámetro, apply() requiere una array como segundo parámetro. Los argumentos del método de destino se representan como una array.  

Función de llamada de JavaScript(): utiliza argumentos y valores dados para llamar a una función

Sintaxis:

function.call(object, arg1, arg2)

Ejemplo:

HTML

<script>
   let obj = {
      fname: "geeks",
      mname: "for",
      lname: "geeks",
   };
   let display = function (str1, str2) {
      console.log(`${str1} ${str2} ${this.fname + 
                  this.mname + this.lname}`);
   };
   display.call(obj, "Welcome", "to");
</script>

Producción:

Welcome to geeksforgeeks

Función apply() de JavaScript: este método se utiliza para llamar a una función con argumentos y valores como arrays u objetos de array.  

En ambos casos, el primer argumento será la referencia del objeto que representa ‘esto’ dentro de la función llamada. Por lo tanto, call() es diferente de apply() . Cada uno se puede aplicar a una función, que se ejecuta dentro del contexto del primer argumento. En call() , los argumentos restantes se pasan a la función tal cual, mientras que en apply() , el segundo argumento será una array que la función llamada desempaquetará como argumentos. 

Sintaxis:

function.apply(object, [arg1, arg2])

Ejemplo:

HTML

<script>
    let obj = {
       fname: "geeks",
       mname: "for",
       lname: "geeks",
    };
    let display = function (str1, str2) {
       console.log(`${str1} ${str2} ${this.fname + 
                   this.mname + this.lname}`);
    };
    display.apply(obj, ["Welcome", "to"]);
</script>

Producción:

Welcome to geeksforgeeks

Diferencia entre Function.prototype.apply y Function.prototype.call:

Función.prototipo.aplicar() Función.prototipo.llamada()
Con el método apply(), se puede llamar a una función con un valor específico, así como argumentos proporcionados en forma de array (u objeto).   Usando call(), se llama a una función con el valor y los argumentos dados.  
function.call(objeto, arg1, arg2) function.apply(objeto, [arg1, arg2])

Publicación traducida automáticamente

Artículo escrito por debadebaduttapanda7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *