Maison  >  Article  >  interface Web  >  Explication détaillée des exemples d'utilisation de deux méthodes non héritées en JavaScript

Explication détaillée des exemples d'utilisation de deux méthodes non héritées en JavaScript

伊谢尔伦
伊谢尔伦original
2017-07-20 14:52:031032parcourir

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!
<.>Voir Dans le code rouge, nous avons constaté que pour que la portée de la fonction HelloName() soit sur l'objet myObject, nous devons créer dynamiquement la propriété HelloName de myObject. Cette propriété sert de pointeur vers HelloName(. ) de cette façon, lorsque nous appelons myObject.HelloName (), la variable this à l'intérieur de la fonction pointe vers myObject et d'autres propriétés publiques internes de l'objet peuvent être appelées.

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); //运行结果见上面的注释!!!!
Le résultat de l'exécution est le même que le suivant :

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn