Appels de fonct...LOGIN

Appels de fonctions JavaScript

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 fonction

function hello(name) {

alert('hello,' + name) ;

};

var user = {};

// Attribuer le Attribut sayHi à l'utilisateur

user.sayHi = bonjour;

//Appel de méthode

user.sayHi('Zhang San');

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() {

                                  console.log(this === obj);//false, ceci est un objet global ou un true indéfini, self pointe vers l'extérieur this, c'est-à-dire l'objet actuel

>

}

} ;

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).



section suivante
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> function sum(x,y){ return x+y; } result = sum(2,3); document.write( result ); </script> </head> <body> </body> </html>
soumettreRéinitialiser le code
chapitredidacticiel