L'introduction à Call () sur le site officiel de Mozilla est:
La copie de code est la suivante:
La méthode Call () appelle une fonction ou une méthode avec une valeur spécifiée et plusieurs valeurs de paramètre spécifiées.
Call () syntaxe
La copie de code est la suivante:
fun.call (thisarg [, arg1 [, arg2 [, ...]]])
Paramètre call ()
thisarg
La copie de code est la suivante:
Cette valeur spécifiée lorsque la fonction amusante est en cours d'exécution. Il convient de noter que cette valeur spécifiée ne signifie pas nécessairement la réalité cette valeur lorsque la fonction est exécutée. Si cette fonction est en mode non stricte, cette valeur spécifiée comme nul et indéfinie pointera automatiquement vers l'objet global (l'objet de fenêtre dans le navigateur), et cette valeur avec la valeur d'origine (nombre, chaîne, valeur booléenne) pointera vers l'objet d'emballage automatique de la valeur d'origine.
Arg1, Arg2, ...
La copie de code est la suivante:
Liste de paramètres spécifiée.
Call () Méthode en javascript
Ne faisons pas attention aux explications compliquées ci-dessus, démarrez ce processus étape par étape.
Exemple de méthode d'appel ()
Alors j'ai écrit un autre bonjour, monde:
La copie de code est la suivante:
Fonction Print (P1, P2) {
console.log (p1 + '' + p2);
}
print ("Hello", "monde");
print.call (indéfini, "bonjour", "monde");
Les deux méthodes ont la même sortie, cependant, en revanche, la méthode d'appel passe également une non définie.
Ensuite, regardons un autre exemple.
La copie de code est la suivante:
var obj = function () {};
Fonction Print (P1, P2) {
console.log (p1 + '' + p2);
}
print.call (obj, "bonjour", "monde");
Mais ici, ce que nous avons passé est toujours un non défini, car l'indéfini dans l'exemple précédent est parce qu'un paramètre doit être passé.
La copie de code est la suivante:
fonction print (name) {
console.log (this.p1 + '' + this.p2);
}
var h = {p1: "Hello", p2: "world", print: print};
H.print ("FD");
var h2 = {p1: "Hello", p2: "world"};
print.call (h2, "rien");
L'appel est appelé en empruntant les méthodes et objets des autres, tout comme l'appel. Dans H.print, lorsqu'une fonction est appelée méthode, cela pointera vers l'objet associé. Mais dans cet exemple, nous n'avons pas compris si H2 appelé imprimé ou imprimé appelé H2. J'ai donc cité l'exemple de Mozilla
La copie de code est la suivante:
Produit de fonction (nom, prix) {
this.name = name;
this.price = prix;
si (prix <0)
Throw RangeError ('Impossible de créer le produit "' + name + '" avec un prix négatif');
retourner ceci;
}
fonctionnement de la nourriture (nom, prix) {
Product.Call (ceci, nom, prix);
this.category = 'aliments';
}
Aliments.prototype = nouveau produit ();
Var Cheese = NOUVEAU aliment («Feta», 5);
console.log (fromage);
Ici, nous pouvons vraiment comprendre quel objet appelle quelle méthode. Dans l'exemple, les instances d'objet créées à l'aide du constructeur alimentaire auront le nom et les attributs de prix ajoutés dans le constructeur de produits, mais l'attribut de catégorie est défini dans le constructeur respectif.
La copie de code est la suivante:
fonction print (name) {
console.log (this.p1 + '' + this.p2);
}
var h2 = fonction (no) {
this.p1 = "bonjour";
this.p2 = "monde";
print.Call (this, "rien");
};
H2 ();
Ici, H2 est utilisé comme récepteur pour appeler l'impression de fonction. Comme dans l'exemple de nourriture, dans un constructeur enfant, vous pouvez mettre en œuvre un héritage en appelant la méthode d'appel du constructeur parent.
Quant aux avantages de la méthode d'appel, il est introduit dans "JavaScript efficace".
1. Utilisez la méthode d'appel pour personnaliser le récepteur pour appeler la fonction.
2. Utilisez la méthode d'appel pour appeler une méthode qui n'existe pas dans l'objet donné.
3. Utilisez la méthode d'appel pour définir des fonctions d'ordre supérieur qui permettent aux utilisateurs de spécifier les destinataires pour les fonctions de rappel.