En JavaScript, les fonctions sont des citoyens de première classe. Les fonctions sont un type de données en JavaScript, et non seulement utilisées comme module comme C# ou d'autres langages descriptifs. Il existe quatre modes d'appel pour les fonctions, à savoir : le formulaire d'appel de fonction, le formulaire d'appel de méthode, le formulaire de constructeur et le formulaire d'application. Parmi tous les modes d'appel ici, la principale différence réside dans la signification du mot-clé this. Ces formes d'appel sont présentées ci-dessous.
Contenu principal de cet article :
1. Analysez les quatre formes d'appel des fonctions
2 Clarifiez la signification de ceci dans la fonction
3 Clarifiez le processus de construction des objets de fonction
4. Apprenez à utiliser le contexte pour appeler des fonctions
1. Formulaire d'appel de fonction
Le formulaire d'appel de fonction est le formulaire le plus courant et le mieux compris. La forme dite de fonction consiste à déclarer une fonction et à l'appeler directement. Par exemple :
Vous pouvez constater que l'appel de fonction est très simple, tout comme ce que vous apprenez habituellement. La clé ici est que dans le mode d'appel de fonction, le mot-clé this dans la fonction fait référence à l'objet global, qui est l'objet fenêtre dans le navigateur. Par exemple :
2. Mode d'appel de méthode
Le mode d'appel de fonction est très simple et constitue la méthode d'appel la plus basique. Mais c'est la même fonction, mais elle est différente après l'avoir assignée à un membre d'un objet. Après avoir attribué une fonction à un membre d’un objet, on ne l’appelle plus fonction, mais méthode. Par exemple :
//Modifier le corps de la fonction
var func = function() {
alert(this);
};
var o = {};
o.fn = func;
//Comparez
alert(o.fn === func);
// Appelez
func();
o.fn();
Voici la différence entre l'appel de fonction et l'appel de méthode. Dans l'appel de fonction, cela fait spécifiquement référence à la fenêtre d'objet globale, tandis que dans la méthode, cela fait spécifiquement référence à l'objet actuel, c'est-à-dire que ceci dans o.fn fait référence à l'objet. o.
3. Mode d'appel du constructeur
C'est aussi une fonction. En mode fonction pure, cela fait référence à la fenêtre ; en mode méthode objet, cela fait référence à l'objet actuel. En plus de ces deux cas, les fonctions en JavaScript peuvent aussi être des constructeurs. La syntaxe pour utiliser une fonction comme constructeur consiste à faire précéder l’appel de fonction du mot-clé new. Tel que le code :
1. Tous les attributs qui doivent être utilisés par l'objet doivent être guidés par cela
2. La signification de l'instruction return de la fonction a été réécrite. Si un non-objet est renvoyé, celui-ci sera renvoyé.
ce
dans le constructeurNous devons analyser le processus de création d'objets pour en connaître la signification. Par exemple, le code suivant :
1. Lorsque le programme exécute cette phrase, il n'exécutera pas le corps de la fonction, donc l'interpréteur JavaScript ne connaît pas le contenu de cette fonction.
2. Ensuite, exécutez le nouveau mot-clé pour créer un objet. L'interpréteur alloue de la mémoire, obtient une référence à l'objet et transmet la référence au nouvel objet à la fonction.
3. Exécutez ensuite la fonction et transmettez-lui la référence d'objet transmise. En d’autres termes, dans le constructeur, il s’agit de l’objet qui vient d’être créé par new.
4. Ajoutez ensuite des membres à ceci, c'est-à-dire ajoutez des membres à l'objet.
5. Enfin, la fonction se termine, renvoie ceci et le remet à la variable de gauche.
Après avoir analysé l'exécution du constructeur, nous pouvons constater que ceci dans le constructeur est l'objet actuel.
retour
dans le constructeurLa signification de return dans le constructeur a changé. Premièrement, si dans le constructeur, si un objet est renvoyé, alors la signification d'origine est conservée. Si un non-objet est renvoyé, tel que des nombres, des booléens et des chaînes, alors ceci est renvoyé. S'il n'y a pas d'instruction return, alors ceci est également renvoyé :
4. Appliquer le mode d'appel
En plus des trois modes d'appel ci-dessus, les fonctions en tant qu'objets ont également des méthodes d'application et des méthodes d'appel qui peuvent être utilisées. Il s'agit du quatrième mode d'appel, que j'appelle le mode d'application.Introduisez d'abord le mode d'application. Tout d'abord, le mode d'application peut être utilisé comme une fonction ou une méthode. On peut dire qu'il s'agit d'une méthode d'utilisation flexible. Regardez d’abord la syntaxe : function name.apply(object, paramètre array);
La syntaxe ici est plutôt obscure, utilisons donc des exemples pour illustrer :
1. Créez deux nouveaux fichiers js, à savoir "js1.js" et "js2.js"
2. Ajouter le code
var func2 = function() {
this.name = "Programmer";
};
var o = {};
func2. (o);
alerte(o.name);
Les paramètres ici sont les paramètres de la méthode elle-même, mais ils doivent être stockés sous la forme d'un tableau. Par exemple, le code :
var func = function(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
};
//Créer un objet
var o = {};
//Ajouter des membres à l'objet
//appliquer le mode
var p1 = func.apply(o, [" Zhao Xiaohu", 19 ans, "Homme"]);
// mode d'appel
var p2 = func.call(o, "Zhao Xiaohu", 19 ans, "Homme");
En fait, en utilisant le mode d'application et le mode d'appel, vous pouvez contrôler la signification de ceci de n'importe quelle manière, et ils sont largement utilisés dans le mode de conception de la fonction js. Pour résumer brièvement, il existe quatre modes d'appel de fonction en js, à savoir : fonctionnel, méthode, constructeur et appliquer. Dans ces modes, la signification de this est : dans la fonction, c'est la fenêtre de l'objet global, Dans la méthode, ceci. fait référence à l'objet actuel. Dans le constructeur, this fait référence à l'objet créé. En mode application, cela peut être spécifié arbitrairement. Si null est utilisé dans le modèle d'application, il s'agit d'un modèle de fonction et si un objet est utilisé, il s'agit d'un modèle de méthode.
5. Exemples complets
Terminons cet article par un cas. Description du cas : Il y a un div avec l'identifiant de dv Lorsque la souris est déplacée dessus, la hauteur augmente de 2 fois. Lorsque la souris est laissée, la hauteur sera restaurée directement en dessous :