Fonction JavaScript apply()


Réutilisation de méthode

Avec la méthode apply() , vous pouvez écrire une méthode qui peut être utilisée sur différents objets.


La méthode apply() de JavaScript

La méthode apply() est similaire à la méthode call() (chapitre précédent).

Dans cet exemple, la méthode fullName de person est appliquée à person1 :

Exemple

const person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}

const person1 = {
firstName: "Mary",
lastName: "Doe"
}

// Cela retournera "Mary Doe" :
person.fullName.apply(person1);

Essayez-le vous-même »


La différence entre call() et apply()

La méthode call() prend des arguments séparément .

La méthode apply() prend des arguments sous forme de tableau .

La méthode apply() est très pratique si vous souhaitez utiliser un tableau au lieu d'une liste d'arguments.


La méthode apply() avec des arguments

La méthode apply() accepte des arguments dans un tableau :

Exemple

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"]);

Essayez-le vous-même »

Comparé à la méthode call() :

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");

Essayez-le vous-même »



Simuler une méthode max sur des tableaux

Vous pouvez trouver le plus grand nombre (dans une liste de nombres) en utilisant la méthode Math.max() :

Exemple

Math.max(1,2,3); // Retournera 3

Essayez-le vous-même »

Puisque les tableaux JavaScript n'ont pas de méthode max(), vous pouvez appliquer la méthode Math.max() à la place.

Exemple

Math.max.apply(null, [1,2,3]); // Retournera également 3

Essayez-le vous-même »

Le premier argument (null) n'a pas d'importance. Il n'est pas utilisé dans cet exemple.

Ces exemples donneront le même résultat :

Exemple

Math.max.apply(Math, [1,2,3]); // Retournera également 3

Essayez-le vous-même »

Exemple

Math.max.apply(" ", [1,2,3]); // Retournera également 3

Essayez-le vous-même »

Exemple

Math.max.apply(0, [1,2,3]); // Retournera également 3

Essayez-le vous-même »


Mode strict de JavaScript

En mode strict JavaScript, si le premier argument de la méthode apply() n'est pas un objet, il devient le propriétaire (objet) de la fonction invoquée. En mode "non strict", il devient l'objet global.