Si applica la funzione JavaScript
Metodo Riutilizzo
Con il apply()
metodo, puoi scrivere un metodo che può essere utilizzato su oggetti diversi.
Il metodo JavaScript apply()
Il apply()
metodo è simile al call()
metodo (capitolo precedente).
In questo esempio il metodo fullName di person viene applicato a person1 :
Esempio
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 differenza tra call() e apply()
La differenza è:
Il call()
metodo accetta argomenti separatamente .
Il apply()
metodo accetta argomenti come un array .
Il metodo apply() è molto utile se vuoi usare un array invece di un elenco di argomenti.
Il metodo apply() con argomenti
Il apply()
metodo accetta argomenti in un array:
Esempio
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"]);
Rispetto al call()
metodo:
Esempio
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");
Simula un metodo Max su array
Puoi trovare il numero più grande (in un elenco di numeri) usando il Math.max()
metodo:
Esempio
Math.max(1,2,3); // Will return 3
Poiché gli array JavaScript non hanno un metodo max(), puoi
Math.max()
invece applicare il metodo.
Esempio
Math.max.apply(null, [1,2,3]); // Will also return 3
Il primo argomento (null) non ha importanza. Non viene utilizzato in questo esempio.
Questi esempi daranno lo stesso risultato:
Esempio
Math.max.apply(Math, [1,2,3]); // Will also return 3
Esempio
Math.max.apply(" ", [1,2,3]); // Will also return 3
Esempio
Math.max.apply(0, [1,2,3]); // Will also return 3
Modalità rigorosa JavaScript
In modalità JavaScript rigoroso, se il primo argomento del apply()
metodo non è un oggetto, diventa il proprietario (oggetto) della funzione richiamata. In modalità "non rigorosa", diventa l'oggetto globale.