Chiamata di funzione JavaScript
Metodo Riutilizzo
Con il call()
metodo, puoi scrivere un metodo che può essere utilizzato su oggetti diversi.
Tutte le funzioni sono metodi
In JavaScript tutte le funzioni sono metodi oggetto.
Se una funzione non è un metodo di un oggetto JavaScript, è una funzione dell'oggetto globale (vedere il capitolo precedente).
L'esempio seguente crea un oggetto con 3 proprietà, firstName, lastName, fullName.
Esempio
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
// This will return "John Doe":
myObject.fullName();
La parola chiave questa
In una definizione di funzione, this
si riferisce al "proprietario" della funzione.
Nell'esempio sopra, this
è l' oggetto persona che "possiede" la
funzione fullName .
In altre parole, this.firstName indica la proprietà firstName di questo oggetto .
Leggi di più sulla this
parola chiave in JS this Keyword .
Il metodo JavaScript call()
Il call()
metodo è un metodo JavaScript predefinito.
Può essere utilizzato per invocare (chiamare) un metodo con un oggetto proprietario come argomento (parametro).
Con call()
, un oggetto può utilizzare un metodo appartenente a un altro oggetto.
Questo esempio chiama il metodo fullName di person, usandolo su person1 :
Esempio
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);
Questo esempio chiama il metodo fullName di person, usandolo su person2 :
Esempio
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);
Il metodo call() con argomenti
Il call()
metodo può accettare argomenti:
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");