La raison d'utiliser JS .méthode call ()?

Je suis intéressé quelle est la raison d'avoir une méthode call() en JS. Il semble qu'il duplique la méthode habituelle de l'appel de this.

Par exemple, j'ai un code avec call().

var obj = {
    objType: "Dog"
}

f = function(did_what, what) {
    alert(this.objType + " " + did_what + " " + what);
}

f.call(obj, "ate", "food");

La sortie est "le Chien a mangé de la nourriture". Mais le même résultat je peux obtenir de l'affectation de la fonction de l'objet.

var obj = {
    objType: "Dog"
}

f = function(did_what, what) {
    alert(this.objType + " " + did_what + " " + what);
}

obj.a = f;
obj.a("ate", "food");

Le résultat est le même. Mais ce chemin n'est plus compréhensible et facile à utiliser. Pourquoi call() est-elle nécessaire?

  • Eh bien, vous ne serez pas en mesure d'assigner la fonction à un objet dans tous les cas. E. g. si vous créez une fonction qui accepte un rappel et de vous permettre également de son contexte pour être adoptée, vous pouvez assigner la fonction de rappel de l'objet et de l'appeler directement, mais quel nom choisiriez-vous? Vous pouvez remplacer une méthode existante. call fournit un moyen simple de résoudre ce problème.
InformationsquelleAutor Green | 2012-01-25