1. Chaque fonction contient deux méthodes non héritées : apply() et call().
2. Ils ont le même but, ils appellent tous des fonctions dans une portée spécifique.
3. Les paramètres reçus sont différents. apply() reçoit deux paramètres, l'un est la portée dans laquelle la fonction s'exécute (this) et l'autre est le tableau de paramètres.
Le premier paramètre de la méthode call() est le même que la méthode apply(), mais les paramètres passés à la fonction doivent être listés. Exemple 1 :
window.firstName = "diz"; window.lastName = "song"; var myObject = { firstName: "my", lastName: "Object" }; function HelloName() { console.log("Hello " + this.firstName + " " + this.lastName, " glad to meet you!"); } HelloName.call(window); //huo .call(this); HelloName.call(myObject);
Le résultat d'exécution est :
Hello diz song glad to meet you! Hello my Object glad to meet you!
Exemple 2 :
function sum(num1, num2) { return num1 + num2; } console.log(sum.call(window, 10, 10)); //20 console.log(sum.apply(window,[10,20])); //30
Analyse : Dans l'exemple 1, Nous avons constaté que la véritable utilisation de apply() et call() est d'étendre la portée dans laquelle la fonction s'exécute. Si nous souhaitons utiliser la méthode traditionnelle pour y parvenir, veuillez consulter le code suivant :
window.firstName = "diz"; window.lastName = "song"; var myObject = { firstName: "my", lastName: "Object" }; function HelloName() { console.log("Hello " + this.firstName + " " + this.lastName, " glad to meet you!"); } HelloName(); //Hello diz song glad to meet you! myObject.HelloName = HelloName; myObject.HelloName(); //Hello my Object glad to meet you!
En analysant l'exemple 2, nous pouvons voir l'application réelle des fonctions call() et apply() dans les projets réels, elles doivent être gérées de manière flexible en fonction des conditions réelles !
Une petite question : Revoyez la variable this lors de la définition de la fonction dans la fonction
function temp1() { console.log(this); //Object {} function temp2() { console.log(this); //Window } temp2(); } var Obj = {}; temp1.call(Obj); //运行结果见上面的注释!!!!
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!