31 votes

Pourquoi utiliser le wrapper de fonction javascript (ajouté dans coffeescript) ".call (this)"

Lorsque j'utilise la dernière version (1.0) de Coffee-Script, une sortie javascript simple ressemble à ceci (par défaut):

 (function() {
  var a;
  a = 1;
}).call(this);
 

Qu'est-ce que .call (this) fait et quelle serait la raison de l'ajouter?

34voto

Chuck Points 138930

C'est une façon de s'assurer que la compilation des CoffeeScript a son propre champ pour les noms de variables. Cela présente des avantages en termes d'efficacité et de simplicité (vous savez que vous le JavaScript généré de ne pas taper du pied sur les variables utilisées par un autre code). Vous pouvez le désactiver avec l' --bare (ou -b) option pour la CoffeeScript compilateur.

La raison de l' call(this) , c'est juste pour s'assurer que la CoffeeScript a même this comme le domaine dans lequel il est placé, parce que les fonctions ne sont normalement pas hériter de leur this objet à partir du contexte.

15voto

HaMMeReD Points 1364

C'est la création d'une fonction et l'appel à la fonction parent/objets de portée.

.appel et .appliquer les différentes méthodes de l'appel d'une fonction. En gros, vous avez créé une fonction qui ne fait rien à l'exception de définir un=1 à l'intérieur de son propre champ.

En javascript, vous devez réaliser que chaque fonction est un objet, et this est ce qui fait référence à l'objet en cours/fonction. À l'aide de .call(this) remplacements this à partir de la fonction et le remplace par celui de le contexte de l'appel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X