En JavaScript, la méthode call() et la méthode apply() ont la même fonction. La différence réside dans la manière de recevoir les paramètres. Lors de l'utilisation de la méthode call(), les paramètres passés à la fonction doivent être listés un par un. one. Lors de l'utilisation de apply() , ce qui est transmis à la fonction est le tableau de paramètres.
L'environnement d'exploitation de ce tutoriel : système Windows 10, JavaScript version 1.8.5, ordinateur Dell G3.
La méthode call() appelle une fonction avec une valeur spécifiée et des paramètres fournis séparément (liste de paramètres).
Remarque : La fonction de cette méthode est similaire à la méthode apply(). La seule différence est que la méthode call() accepte une liste de plusieurs paramètres, tandis que la méthode apply() accepte un tableau contenant plusieurs paramètres.
Syntaxe
fun.call(thisObj[, arg1[, arg2[, ...]]])
Définition : Appeler une méthode d'un objet pour remplacer l'objet actuel par un autre objet.
Description :
La méthode call peut être utilisée pour appeler une méthode à la place d'un autre objet. La méthode d'appel modifie le contexte d'objet d'une fonction du contexte initial au nouvel objet spécifié par thisObj.
Si le paramètre thisObj n'est pas fourni, l'objet Global est utilisé comme thisObj.
Parameter
thisObj
Cette valeur spécifiée lorsque la fonction amusante est en cours d'exécution. Il convient de noter que la valeur this spécifiée n'est pas nécessairement la valeur this réelle lorsque la fonction est exécutée. Si la fonction est en mode non strict, la valeur this spécifiée comme nulle et non définie pointera automatiquement vers l'objet global (le navigateur est). l'objet window), et celui dont la valeur est une valeur primitive (nombre, chaîne, valeur booléenne) pointera vers l'objet d'encapsulage automatique de la valeur primitive.
arg1, arg2, ...
Liste des paramètres spécifiés.
Valeur de retour
Le résultat de retour inclut cette valeur et ces paramètres spécifiés. La méthode
apply()apply() appelle une fonction avec une valeur this spécifiée et des arguments fournis sous forme de tableau (ou d'objet de type tableau).
Syntaxe
fun.apply(thisObj, [argsArray])
Définition : Appliquer une méthode d'un objet pour remplacer l'objet actuel par un autre objet.
Remarque :
Si argsArray n'est pas un tableau valide ou n'est pas un objet arguments, une TypeError sera provoquée.
Si ni argArray ni thisObj ne sont fournis, alors l'objet Global sera utilisé comme thisObj et aucun paramètre ne pourra être transmis.
Parameter
thisObj
Cette valeur spécifiée lorsque la fonction amusante est en cours d'exécution. Il convient de noter que la valeur spécifiée n'est pas nécessairement la valeur réelle lorsque la fonction est exécutée. Si la fonction est en mode non strict, alors lorsque la valeur spécifiée est nulle ou non définie, elle pointera automatiquement vers l'objet global. (dans le navigateur, c'est un objet window), et celui dont la valeur est une valeur primitive (nombre, chaîne, valeur booléenne) pointera vers l'objet d'encapsulation automatique de la valeur primitive.
argsArray
Un tableau ou un objet de type tableau, dont les éléments du tableau seront transmis à la fonction fun en tant que paramètres séparés. Si la valeur de ce paramètre est nulle ou indéfinie, cela signifie qu'aucun paramètre ne doit être transmis. À partir d'ECMAScript 5
, il est possible d'utiliser des objets de type tableau.
RésuméLes deux ont la même fonction, ils lient tous les deux obj (c'est-à-dire this) à thisObj. À l'heure actuelle, thisObj a les propriétés et les méthodes de obj. En d’autres termes, thisObj « hérite » des propriétés et méthodes de obj. La seule différence est que apply accepte les paramètres de tableau, tandis que call accepte les paramètres continus.
La méthode call() et la méthode apply() ont la même fonction. La différence entre elles réside dans la manière dont elles reçoivent les paramètres. Pour call(), le premier paramètre est la valeur de this qui ne change pas, c'est que les paramètres restants sont transmis directement à la fonction. (Lors de l'utilisation de la méthode call(), les paramètres passés à la fonction doivent être répertoriés un par un. Lors de l'utilisation de apply(), le tableau de paramètres est passé à la fonction) Le code suivant explique :
function add(c, d){ return this.a + this.b + c + d; } var o = {a:1, b:3}; add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16 add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34
Les deux call et apply sont utilisé pour changer quelque chose Le contexte lorsqu'une fonction est en cours d'exécution est le contexte. En d'autres termes, il s'agit de changer le pointeur de this à l'intérieur du corps de la fonction. Parce que les fonctions JavaScript ont les concepts de « contexte de définition » et de « contexte d'exécution » et de « contexte peut être modifié ».
Les deux fonctions sont exactement les mêmes, mais la manière d'accepter les paramètres est différente. Par exemple, il existe une fonction fun définie comme suit :
var fun = function(arg1, arg2) {};
peut être appelée via fun.call(this, arg1, arg2) ou fun.apply(this, [arg1, arg2]);. Parmi eux, il s'agit du contexte que vous souhaitez spécifier, qui peut être n'importe quel objet JavaScript (tout en JavaScript est un appel d'objet qui doit transmettre les paramètres dans l'ordre, tandis que apply place les paramètres dans un tableau).
En JavaScript, le nombre de paramètres d'une fonction n'est pas fixe, donc en termes de conditions applicables, lorsque vos paramètres connaissent clairement le numéro, utilisez call, et lorsque vous n'êtes pas sûr, utilisez apply, puis poussez les paramètres dans le array Passez-le. Lorsque le nombre de paramètres est incertain, tous les paramètres peuvent également être parcourus via le tableau d'arguments à l'intérieur de la fonction.
Recommandations associées : Tutoriel d'apprentissage Javascript
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!