Appel de fonction JavaScript
Réutilisation de la méthode
Avec la call()
méthode, vous pouvez écrire une méthode qui peut être utilisée sur différents objets.
Toutes les fonctions sont des méthodes
En JavaScript, toutes les fonctions sont des méthodes d'objet.
Si une fonction n'est pas une méthode d'un objet JavaScript, c'est une fonction de l'objet global (voir chapitre précédent).
L'exemple ci-dessous crée un objet avec 3 propriétés, firstName, lastName, fullName.
Exemple
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
// This will return "John Doe":
myObject.fullName();
Le ce mot- clé
Dans une définition de fonction, this
fait référence au "propriétaire" de la fonction.
Dans l'exemple ci-dessus, this
est l' objet personne qui "possède" la
fonction fullName .
En d'autres termes, this.firstName signifie la propriété firstName de cet objet .
En savoir plus sur le mot- this
clé à JS ce mot-clé .
La méthode JavaScript call()
La call()
méthode est une méthode JavaScript prédéfinie.
Il peut être utilisé pour invoquer (appeler) une méthode avec un objet propriétaire comme argument (paramètre).
Avec call()
, un objet peut utiliser une méthode appartenant à un autre objet.
Cet exemple appelle la méthode fullName de person, en l'utilisant sur person1 :
Exemple
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);
Cet exemple appelle la méthode fullName de person, en l'utilisant sur person2 :
Exemple
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);
La méthode call() avec des arguments
La call()
méthode peut accepter des arguments :
Exemple
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");