¿Cuál es la diferencia entre llamar y aplicar en JavaScript?

Método call(): Llama al método, tomando como argumento el objeto propietario. La palabra clave this se refiere al ‘propietario’ de la función o el objeto al que pertenece. Podemos llamar a un método que se puede usar en diferentes objetos. 

Sintaxis:

object.objectMethod.call( objectInstance, arguments )

Parámetros: Acepta dos parámetros como se mencionó anteriormente y se describe a continuación:

  • objectInstance: contiene la instancia de un objeto.
  • argumentos: El método call() toma los argumentos separados por comas.

Método apply(): El método apply() se usa para escribir métodos, que se pueden usar en diferentes objetos. Es diferente de la función call() porque toma los argumentos como una array. 

Sintaxis:

object.objectMethod.apply(objectInstance, arrayOfArguments)

Parámetros: Acepta dos parámetros como se mencionó anteriormente y se describe a continuación:

  • objectInstance: contiene la instancia de un objeto.
  • arrayOfArguments: El método apply() toma la array de argumentos.

Diferencia entre el método call() y apply(): La única diferencia es que el método call() toma los argumentos separados por comas, mientras que el método apply() toma la array de argumentos. 

Ejemplo 1: Este ejemplo usa el método call() para llamar a una función. 

html

<!DOCTYPE html>
<html>
    <head>
        <title>call() method</title>
    </head>
     
    <body style = "text-align:center;">
        <h1 style = "color:green;" >
            GeeksForGeeks
        </h1>
 
        <button onClick="fun()">
            click
        </button>
         
        <p id="GFG"></p>
 
         
        <!-- Script to use call() method to call
            function -->
        <script>
            function fun() {
            let p = {
                fullName: function(addr1, addr2) {
                return this.fName + " " + this.lName
                        + ", " + addr1 + ", " + addr2;
                }
            }
                 
            let p1 = {
                fName:"GFGfName",
                lName: "GFGlName",
            }
                 
            let x = p.fullName.call(p1, "India", "USA");
            document.getElementById("GFG").innerHTML = x;
            }
        </script>
    </body>
</html>

Producción:

  • Antes de hacer clic en el botón:

 

  • Después de hacer clic en el botón: 

Ejemplo 2: este ejemplo hace el mismo trabajo usando el método apply().

HTML

<!DOCTYPE html>
<html>
    <head>
        <title>JavaScript apply() method</title>
    </head>
         
    <body style = "text-align:center;">
     
        <h1 style = "color:green;" >
            GeeksForGeeks
        </h1>
 
        <button onClick="fun()">
            click
        </button>
         
        <p id="GFG"></p>
 
         
        <script>
            function fun() {
                let p = {
                fullName: function(addr1, addr2) {
                    return this.fName + " " + this.lName
                            + ", " + addr1 + ", " + addr2;
                }
            }
            let p1 = {
                fName:"GFGfName",
                lName: "GFGlName",
            }
                let x = p.fullName.apply(p1, ["India", "USA"]);
                document.getElementById("GFG").innerHTML = x;
            }
        </script>
    </body>
</html>

Producción :

  • Antes de hacer clic en el botón: 

  • Después de hacer clic en el botón: 

Entendamos las diferencias en forma tabular:

  método call() método apply()
1. Se usa para escribir un método que se puede usar en diferentes objetos. Se utiliza para escribir métodos, que se pueden utilizar en diferentes objetos.
2. Es un método predefinido en Javascript. Su valor de retorno es el resultado de la función de llamada junto con este valor y argumentos.
3. Se usa para que un objeto use un método que pertenece a un objeto diferente. Podemos usar una lista con esta función en lugar de la array
4. Este método también puede aceptar parámetros. Este método toma el parámetro como una array.
5.

Sintaxis -:

object.objectMethod.call( objectInstance, argumentos )

Sintaxis -:

objeto.objectMethod.apply(objectInstance, arrayOfArguments)

Publicación traducida automáticamente

Artículo escrito por PranchalKatiyar 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 *