Le code du corps de la fonction sera exécuté lorsque la fonction sera appelée.
Les fonctions Javascript ont 4 méthodes d'appel :
Appel de fonction ordinaire
Appel de méthode
Appel de constructeur
Par appel( ) et appliquer () appels indirects
1. Appels de fonction ordinaires
Les méthodes d'appel de fonction les plus couramment utilisées, telles que :
alert("hello");
var result = add(1, 2);
2. >
//Définir une fonctionfunction hello(name) {
alert('hello,' + name) ;
};
var user = {};
// Attribuer le Attribut sayHi à l'utilisateur
//Appel de méthode
Une différence entre les appels de fonction ordinaires et les appels de méthode : dans "ordinaire Dans le " "appel de fonction", le contexte d'appel de la fonction (la valeur de ceci) est l'objet global (mode non strict) ou indéfini (mode strict). Dans la méthode "appel de méthode", cela pointe vers l'objet actuel. En utilisant cette fonctionnalité, nous pouvons renvoyer directement ceci lorsque la méthode ne nécessite pas une valeur de retour claire, réalisant ainsi un « chaînage de méthodes ».
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> function myFunction(a, b) { return a * b; } document.getElementById("demo").innerHTML = myFunction(10, 2); </script> </body> </html>
This dans les fonctions imbriquées : dans les fonctions imbriquées, la fonction interne n'héritera pas du this de la fonction externe, c'est-à-dire que lorsque la fonction interne est appelée comme méthode, le this de la fonction interne pointe vers l'objet appelant actuel ;Lorsque la fonction interne est appelée en tant que fonction, la valeur de ceci est l'objet global (mode non strict) ou indéfini (mode strict). Comment accéder à cela de la fonction externe dans la fonction interne ? Ceci est généralement enregistré dans une variable locale et accessible via des variables :
var obj = {f : function() {
var self = this;
console.log(this === obj);//true, cela pointe vers l'objet actuel
f1();
fonction f1() {
>
}
} ;
3. Appel du constructeur
Lorsqu'un objet est créé à l'aide du mot-clé new, le constructeur est appelé. Si le constructeur n'a pas de paramètres formels, vous pouvez omettre les parenthèses :
var obj = new Object();//Équivalent àvar obj = nouvel objet;
Appelez le constructeur et créez un nouvel objet. Ce nouvel objet deviendra le contexte d'appel du constructeur (la valeur de ceci) :
function User(name) {
this.name=name;
console.debug(this);
}
var user = new User('Zhang San');
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> function myFunction(arg1, arg2) { this.firstName = arg1; this.lastName = arg2; } var x = new myFunction("John","Doe") document.getElementById("demo").innerHTML = x.firstName; </script> </body> </html>
Par appel() et postuler( ) Appel indirect
Les fonctions en Javascript sont aussi des objets et ont des méthodes. Parmi eux, call() et apply() peuvent être utilisés pour appeler des fonctions indirectement. Le premier paramètre de call() est utilisé pour spécifier le contexte d'appel (c'est-à-dire sa valeur), et les paramètres suivants sont les paramètres réels transmis à la fonction appelante.
var nom = 'A';
var utilisateur = {
nom : 'B'
};
fonction showName() {
alert(this.name);
}
showName();//A, ceci est un objet global
showName.call(user);//B, c'est l'objet utilisateur
apply() est similaire à call( ), mais la différence Le problème est que les paramètres réels suivants doivent être transmis sous la forme d'un tableau (le tableau d'arguments de la fonction actuelle peut être transmis directement).