utilisation de call ()

La méthode call () utilise une valeur spécifiée et un ou plusieurs paramètres pour appeler une fonction.

Remarque: la syntaxe et la fonction de cette méthode sont similaires à celles de la méthode apply (). La seule différence est que la méthode call () accepte une liste de paramètres, tandis que la méthode apply () accepte un tableau contenant plusieurs paramètres.

Utilisez la méthode call pour appeler le constructeur parent

Dans un constructeur enfant, vous pouvez implémenter l'héritage en appelant la méthode d'appel du constructeur parent. Dans l'exemple suivant, les instances d'objet créées à l'aide des constructeurs Food et Toy auront toutes l'attribut name et l'attribut price ajoutés dans le constructeur Product, mais l'attribut category est défini dans leurs constructeurs respectifs.

function Product(name, price) {
    
    
  this.name = name;
  this.price = price;
}

function Food(name, price) {
    
    
  Product.call(this, name, price);
  this.category = 'food';
}

function Toy(name, price) {
    
    
  Product.call(this, name, price);
  this.category = 'toy';
}

var cheese = new Food('feta', 5);
var fun = new Toy('robot', 40);

console.log(cheese.name) // "feta"
console.log(fun.name) // "robot"

Utilisez la méthode d'appel pour appeler des fonctions anonymes

Dans la boucle for de l'exemple suivant, nous créons une fonction anonyme, puis exécutons la fonction anonyme avec chaque élément du tableau en tant que valeur spécifiée en appelant la méthode d'appel de la fonction. L'objectif principal de cette fonction anonyme est d'ajouter une méthode d'impression à chaque objet élément du tableau. Cette méthode d'impression peut imprimer le numéro d'index correct de chaque élément du tableau. Bien sûr, il n'est pas nécessaire de passer l'élément de tableau en tant que valeur this à la fonction anonyme (les paramètres normaux conviennent), le but est de démontrer l'utilisation de call.

var animals = [
  {
    
     species: 'Lion', name: 'King' },
  {
    
     species: 'Whale', name: 'Fail' }
];

for (var i = 0; i < animals.length; i++) {
    
    
  (function(i) {
    
    
    this.print = function() {
    
    
      console.log('#' + i + ' ' + this.species
                  + ': ' + this.name);
    }
    this.print();
  }).call(animals[i], i);
}
//打印出:
// "#0 Lion: King"
// "#1 Whale: Fail"

Utilisez la méthode d'appel pour appeler la fonction et spécifier le "ceci" du contexte

Dans l'exemple suivant, lorsque la méthode greet est appelée, la valeur this de la méthode sera liée à l'objet obj.

function greet() {
    
    
  var reply = [this.animal, 'typically sleep between', this.sleepDuration].join(' ');
  console.log(reply);
}

var obj = {
    
    
  animal: 'cats', sleepDuration: '12 and 16 hours'
};

greet.call(obj);  // cats typically sleep between 12 and 16 hours

Utilisez la méthode d'appel pour appeler la fonction et ne spécifiez pas le premier paramètre (argument)

Dans l'exemple suivant, nous avons appelé la méthode d'affichage, mais nous n'avons pas passé son premier paramètre. Si le premier paramètre n'est pas passé, la valeur de this sera liée à l'objet global.

var sData = 'Wisen';

function display() {
    
    
  console.log('sData value is %s ', this.sData);
}

display.call();  // sData value is Wisen

Remarque: en mode strict, la valeur de ceci sera indéfinie. comme suit.

'use strict';

var sData = 'Wisen';

function display() {
    
    
  console.log('sData value is %s ', this.sData);
}

display.call(); // Cannot read the property of 'sData' of undefined

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42549581/article/details/113995635
conseillé
Classement