Función de JavaScript Aplicar
Reutilización de métodos
Con el apply()
método, puede escribir un método que se puede usar en diferentes objetos.
El método JavaScript apply()
El apply()
método es similar al call()
método (capítulo anterior).
En este ejemplo, el método fullName de person se aplica en person1 :
Ejemplo
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName: "Mary",
lastName: "Doe"
}
// This will return "Mary Doe":
person.fullName.apply(person1);
La diferencia entre call() y apply()
La diferencia es:
El call()
método toma los argumentos por separado .
El apply()
método toma los argumentos como una matriz .
El método apply() es muy útil si desea utilizar una matriz en lugar de una lista de argumentos.
El método apply() con argumentos
El apply()
método acepta argumentos en una matriz:
Ejemplo
const person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName
+ "," + city + "," + country;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
person.fullName.apply(person1, ["Oslo", "Norway"]);
Comparado con el call()
método:
Ejemplo
const person = {
fullName: function(city, country) {
return this.firstName + " " + this.lastName
+ "," + city + "," + country;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
person.fullName.call(person1, "Oslo", "Norway");
Simular un método Max en matrices
Puede encontrar el número más grande (en una lista de números) usando el Math.max()
método:
Ejemplo
Math.max(1,2,3); // Will return 3
Dado que las matrices de JavaScript no tienen un método max(), puede aplicar el
Math.max()
método en su lugar.
Ejemplo
Math.max.apply(null, [1,2,3]); // Will also return 3
El primer argumento (nulo) no importa. No se utiliza en este ejemplo.
Estos ejemplos darán el mismo resultado:
Ejemplo
Math.max.apply(Math, [1,2,3]); // Will also return 3
Ejemplo
Math.max.apply(" ", [1,2,3]); // Will also return 3
Ejemplo
Math.max.apply(0, [1,2,3]); // Will also return 3
Modo estricto de JavaScript
En el modo estricto de JavaScript, si el primer argumento del apply()
método no es un objeto, se convierte en el propietario (objeto) de la función invocada. En el modo "no estricto", se convierte en el objeto global.