Aplicação de função JavaScript
Reutilização de Método
Com o apply()
método, você pode escrever um método que pode ser usado em diferentes objetos.
O método JavaScript apply()
O apply()
método é semelhante ao call()
método (capítulo anterior).
Neste exemplo, o método fullName de person é aplicado em person1 :
Exemplo
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName: "Mary",
lastName: "Doe"
}
// This will return "Mary Doe":
person.fullName.apply(person1);
A diferença entre call() e apply()
A diferença é:
O call()
método recebe argumentos separadamente .
O apply()
método recebe argumentos como um array .
O método apply() é muito útil se você quiser usar um array em vez de uma lista de argumentos.
O método apply() com argumentos
O apply()
método aceita argumentos em um array:
Exemplo
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 com o call()
método:
Exemplo
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 um método Max em arrays
Você pode encontrar o maior número (em uma lista de números) usando o Math.max()
método:
Exemplo
Math.max(1,2,3); // Will return 3
Como os arrays JavaScript não têm um método max(), você pode aplicar o
Math.max()
método em vez disso.
Exemplo
Math.max.apply(null, [1,2,3]); // Will also return 3
O primeiro argumento (null) não importa. Não é usado neste exemplo.
Esses exemplos darão o mesmo resultado:
Exemplo
Math.max.apply(Math, [1,2,3]); // Will also return 3
Exemplo
Math.max.apply(" ", [1,2,3]); // Will also return 3
Exemplo
Math.max.apply(0, [1,2,3]); // Will also return 3
Modo estrito de JavaScript
No modo estrito do JavaScript, se o primeiro argumento do apply()
método não for um objeto, ele se tornará o proprietário (objeto) da função invocada. No modo "não-estrito", torna-se o objeto global.