Les appels de fonctions JavaScript sont divisés en 4 modes :
1. Mode d'appel de méthode : c'est-à-dire que l'objet contient des attributs de méthode, Obj.methodName() ou Obj[methodName]().
2. Mode d'appel de fonction : methodName().
3. Mode d'appel du constructeur : new MethodName().
4. Appliquer et appeler les modes d'appel : ObjA.apply(ObjB,args[]) ou ObjA.call(ObjB,arg1,arg2...).
Lorsqu'une fonction est appelée, en plus de recevoir des paramètres formels, elle reçoit également ceci et des arguments. Parmi eux, il s'agit du contexte de l'objet fonction et les arguments sont les paramètres réels.
Appliquer et appeler implémente la même fonction, c'est-à-dire changer le contexte de l'objet fonction (la référence pointée par ceci. La différence est que les paramètres formels sont différents). apply correspond à des arguments ou à un tableau, call correspond à plusieurs paramètres formels individuels séparés par des virgules.
function add(c) { alert(this.a+this.b+c); } var test={a:1,b:2} add.call(test,3);
Avant d'exécuter add.call(test,3);, add et test appartiennent à window, et cela pointe vers window à ce moment. add.call(test,3); Lors de l'exécution, entrez le corps de la méthode add. À ce moment, cela passe de window à test. À ce moment, this.a=test.a, this.b=test.b, et c sont transmis en tant que paramètres formels. La valeur de alert() est 1 2 3=6. apply a également la même fonction.
Extension et héritage par candidature et appel :
function Animal(name){ this.name = name; this.showName = function(){ alert(this.name); } } function Cat(name){ Animal.call(this, name); } var cat = new Cat("Black Cat");//执行时,Cat函数体的this由window切换为Cat{}, // Animal函数体的this.name通过形式参数传入即为Black Cat,最终cat //得到的结果为cat=Cat{name:"Black Cat",showName: function(){ alert(this.name);}, cat.showName();//执行时this由window切换为 //Cat{name:"Black Cat",showName: function(){ alert(this.name);} 此时this.name //为this.name=Cat.name,因此为Black Cat。