Méthodes apply vs call en JavaScript
-
La méthode
call()
en JavaScript -
La méthode
apply()
en JavaScript -
l’exemple de méthode
call()
en JavaScript -
Méthode alternative en utilisant la méthode
apply()
Cet article explique comment utiliser les méthodes call()
et apply()
en JavaScript. La différence entre les deux fonctions est expliquée à l’aide de quelques exemples simples.
Jetons un coup d’œil aux méthodes suivantes et à leur fonctionnement.
La méthode call()
en JavaScript
Prendre l’objet propriétaire comme argument est la méthode call()
. Le mot-clé this
fait référence au propriétaire
de la fonction ou de l’objet auquel elle appartient.
Nous pouvons également appeler une méthode pour l’utiliser sur différents objets. Cela nous permettra d’invoquer les méthodes avec des arguments séparés par des virgules.
Syntaxe de la méthode call()
en JavaScript
abc_object.object_method.call(object_instance, arguments, ...)
Comme mentionné ci-dessus, la méthode call()
accepte deux paramètres, que nous décrirons ci-dessous.
- Dans le premier paramètre,
object_instance
contiendra l’instance d’un objet. - Les arguments séparés par des virgules sont dans le deuxième paramètre.
La méthode apply()
en JavaScript
apply()
est utilisé pour écrire sur un objet différent. Il prend les valeurs sous la forme d’un tableau.
Syntaxe de la méthode apply()
en JavaScript
abc_object.object_method.apply(object_instance, [arguments_array...])
La méthode apply()
accepte deux paramètres comme indiqué ci-dessus.
- Dans le premier paramètre,
object_instance
contiendra l’instance d’un objet. - Dans le deuxième paramètre, les arguments sont sous la forme d’un tableau.
l’exemple de méthode call()
en JavaScript
Nous allons créer un bouton simple, Click to display
, qui déclenchera une fonction sur l’événement de clic.
La fonction utilisera la méthode call()
et nous afficherons un résultat de texte combiné en utilisant des objets contenant plusieurs valeurs de chaîne en tant que paires clé-valeur. Il combinera simplement les chaînes de l’objet donné en passant un paramètre à l’aide de la méthode call()
.
Le résultat sera affiché sous forme de paragraphe.
<!DOCTYPE html>
<html>
<head>
<title>
call() method Example
</title>
</head>
<body style = "text-align:center;">
<h1 >
Click on "Click to display" for display combined Text using call()
</h1>
<button onClick="fun()">
Click to display
</button>
<p id="mypara"></p>
<!-- Script tags to use call() method to call
function -->
<script>
function fun() {
let object_b = {
combinedText: function(text1, text2) {
return this.firstName + " " + this.lastName
+ " " + text1 + " " + text2;
}
}
let object_a = {
firstName:"DelftStack",
lastName: "Technology",
}
let x = object_b.combinedText.call(object_a, "is", "Best");
document.getElementById("mypara").innerHTML = x;
}
</script>
</body>
</html>
Dans la page source HTML
ci-dessus, vous pouvez voir un simple bouton Click to display
qui appelle la fonction fun()
.
Dans le corps fun()
est initialisé avec une autre méthode combinedText
dans object_b
. Il renvoie une chaîne concaténée de paramètres passés.
Un autre objet initialisé object_a
qui contient plusieurs chaînes comme valeur-clé en utilisant les paramètres call()
(object_a,"is","best")
. Les deux se concatènent dans la chaîne et renvoient le résultat.
Le résultat est affiché par le getElementById()
.
Méthode alternative en utilisant la méthode apply()
Les mêmes résultats sont réalisables par la méthode apply()
. Vous pouvez utiliser la méthode apply()
en passant un tableau d’arguments au lieu d’arguments séparés par des virgules object_b.combinedText.apply(object_a, ["is", "Best"])
.
<script>
function fun() {
let p = {
combinedText: function(text1, text2) {
return this.firstName + " " + this.lastName
+ ", " + text1 + ", " + text2;
}
}
let object_a = {
firstName:"DelftStack",
lastName: "Technology",
}
let x = p.combinedText.apply(object_a, ["Is", "Best"]);
document.getElementById("mypara").innerHTML = x;
}
</script>
Dans l’exemple ci-dessus, la méthode x = object_b.combinedText.apply()
est utilisée avec les paramètres (object_a,[array_arguments])
.
Dans l’étape suivante, nous devons ajouter la variable de résultat dans l’identifiant de paragraphe mypara
pour afficher la valeur sur la page HTML.