Maison  >  Article  >  interface Web  >  Introduction à la méthode call() dans les compétences Javascript_javascript

Introduction à la méthode call() dans les compétences Javascript_javascript

WBOY
WBOYoriginal
2016-05-16 16:09:231191parcourir

L'introduction de call() sur le site officiel de Mozilla est :

Copier le code Le code est le suivant :

La méthode call() appelle une fonction ou une méthode en utilisant une valeur this spécifiée et plusieurs valeurs de paramètres spécifiées.

Syntaxe d'appel()
Copier le code Le code est le suivant :

fun.call(thisArg[, arg1[, arg2[, ...]]])

Paramètres Call()

thisArg

Copier le code Le code est le suivant :

La valeur this spécifiée lorsque la fonction fun est en cours d'exécution. Il est à noter que la valeur this spécifiée n'est pas nécessairement la valeur this réelle lorsque la fonction est exécutée. Si la fonction est en mode non strict, la valeur this spécifiée comme nulle et indéfinie pointera automatiquement vers l'objet global (dans le navigateur, c'est un objet fenêtre), et celui dont la valeur est une valeur primitive (nombre, chaîne, valeur booléenne) pointera vers l'objet d'encapsulation automatique de la valeur primitive.

arg1, arg2, ...
Copier le code Le code est le suivant :

La liste de paramètres spécifiée.

La méthode call() en Javascript

Ne faites pas attention aux explications compliquées ci-dessus et démarrez le processus étape par étape.

Méthode Instance d'appel()

Alors j'ai écrit un autre Hello, World :

Copier le code Le code est le suivant :

fonction imprimer(p1, p2) {
console.log( p1 ' ' p2);
>
print("Bonjour", "Monde");
print.call(undefined, "Bonjour", "Monde");

Les deux méthodes ont le même résultat. Cependant, en revanche, la méthode d'appel passe également en mode indéfini.

Ensuite, regardons un autre exemple.

Copier le code Le code est le suivant :

var obj=fonction(){};
fonction imprimer(p1, p2) {
console.log( p1 ' ' p2);
>

print.call(obj, "Bonjour", "Monde");

Seulement ici, ce que nous transmettons n'est toujours pas défini, car l'indéfini dans l'exemple précédent est dû au fait qu'un paramètre doit être transmis. Cela ne reflète pas vraiment l'utilisation de call. Regardons un meilleur exemple.

Copier le code Le code est le suivant :

fonction print(nom) {
console.log( this.p1 ' ' this.p2);
>

var h={p1:"bonjour", p2:"monde", print:print};
h.print("fd");

var h2={p1:"bonjour", p2:"monde"};
print.call(h2, "rien");

Appeler signifie emprunter les méthodes et les objets d'autres personnes pour appeler, tout comme appeler les vôtres. Dans h.print, lorsque la fonction est appelée en tant que méthode, cela pointe vers l'objet concerné. C'est juste que dans cet exemple, nous n'avons pas compris si h2 appelait print ou print appelait h2. J'ai donc cité l'exemple de Mozilla

Copier le code Le code est le suivant :

function Produit(nom, prix) {
This.name = nom;
This.price = prix;

si (prix < 0)
          throw RangeError('Impossible de créer le produit "'nom '" avec un prix négatif');
Renvoyez ceci ;
>

fonction Alimentaire(nom, prix) {
Product.call(ce, nom, prix);
This.category = 'nourriture';
>
Food.prototype = nouveau produit();

fromage var = new Food('feta', 5);
console.log(fromage);


Ici, nous pouvons vraiment voir quel objet a appelé quelle méthode. Dans l'exemple, les instances d'objet créées à l'aide du constructeur Food auront les attributs name et price ajoutés dans le constructeur Product, mais les attributs de catégorie sont définis dans leurs constructeurs respectifs.

Copier le code Le code est le suivant :

fonction print(nom) {
console.log( this.p1 ' ' this.p2);
>

var h2= fonction(non){
This.p1 = "bonjour";
This.p2 = "monde";
Print.call(this, "rien");
};
h2();

h2 fait ici office de récepteur pour appeler la fonction print. Comme dans l'exemple Food, au sein d'un constructeur enfant, vous pouvez implémenter l'héritage en appelant la méthode d'appel du constructeur parent.

Quant aux avantages de la méthode Call, ils sont présentés dans "Effective JavaScript".

1. Utilisez la méthode d'appel pour personnaliser le récepteur afin qu'il appelle la fonction.
2. Utilisez la méthode call pour appeler des méthodes qui n'existent pas dans l'objet donné.
3. Utilisez la méthode call pour définir des fonctions d'ordre supérieur qui permettent aux utilisateurs de spécifier des récepteurs pour la fonction de rappel.

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