Chamada de função JavaScript
Reutilização de Método
Com o call()
método, você pode escrever um método que pode ser usado em diferentes objetos.
Todas as funções são métodos
Em JavaScript todas as funções são métodos de objetos.
Se uma função não é um método de um objeto JavaScript, é uma função do objeto global (veja o capítulo anterior).
O exemplo abaixo cria um objeto com 3 propriedades, firstName, lastName, fullName.
Exemplo
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
// This will return "John Doe":
myObject.fullName();
A palavra- chave esta
Em uma definição de função, this
refere-se ao "proprietário" da função.
No exemplo acima, this
é o objeto pessoa que "possui" a
função fullName .
Em outras palavras, this.firstName significa a propriedade firstName deste objeto .
Leia mais sobre a this
palavra-chave em JS this Keyword .
O método JavaScript call()
O call()
método é um método JavaScript predefinido.
Ele pode ser usado para invocar (chamar) um método com um objeto proprietário como argumento (parâmetro).
Com call()
, um objeto pode usar um método pertencente a outro objeto.
Este exemplo chama o método fullName de person, usando-o em person1 :
Exemplo
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "John Doe":
person.fullName.call(person1);
Este exemplo chama o método fullName de person, usando-o em person2 :
Exemplo
const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person1 = {
firstName:"John",
lastName: "Doe"
}
const person2 = {
firstName:"Mary",
lastName: "Doe"
}
// This will return "Mary Doe"
person.fullName.call(person2);
O método call() com argumentos
O call()
método pode aceitar argumentos:
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");