Maison > interface Web > js tutoriel > le corps du texte

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

伊谢尔伦
Libérer: 2017-07-20 14:52:03
original
1055 Les gens l'ont consulté

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);
Copier après la connexion

Le résultat d'exécution est :

Hello diz song glad to meet you! 
Hello my Object glad to meet you!
Copier après la connexion

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
Copier après la connexion

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!
Copier après la connexion
<. 🎜>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); //运行结果见上面的注释!!!!
Copier après la connexion
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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!