Warum verwenden Sie den JavaScript -Funktionswrapper (in Coffeescript hinzugefügt) ".Call (this)"

StackOverflow https://stackoverflow.com/questions/4542942

  •  13-10-2019
  •  | 
  •  

Frage

Wenn ich die neueste Veröffentlichung von Coffee-Script (1.0) verwende, sieht eine einfache JavaScript-Ausgabe so aus (standardmäßig):

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

Was macht .Call (this) Tu und was wäre der Grund, es hinzuzufügen?

War es hilfreich?

Lösung

Es wird eine Funktion erstellt und sich dann mit dem Umfang der übergeordneten Funktion/des Objekts aufruft.

.Call und .Apply sind verschiedene Methoden, um eine Funktion aufzurufen. Sie haben im Grunde eine Funktion erstellt, die nichts anderes tut, als a = 1 in seinem eigenen Bereich festzulegen.

In JavaScript müssen Sie erkennen, dass jede Funktion ein Objekt ist und this bezieht sich auf das aktuelle Objekt/die aktuelle Funktion. Verwendung .call(this) überschreiben this Aus der Funktion aus und ersetzt sie durch den einen aus dem aufrufenden Kontext.

Andere Tipps

Dies ist eine Möglichkeit, sicherzustellen, dass das zusammengestellte Coffeescript über seinen eigenen Bereich für Variablennamen verfügt. Dies hat Vorteile in Bezug auf Effizienz und Einfachheit (Sie kennen Sie, dass das generierte JavaScript nicht auf Variablen stampft, die von einem anderen Code verwendet werden). Sie können es mit dem deaktivieren --bare (oder -b) Option zum CoffeeScript -Compiler.

Der Grund für die call(this) ist nur um sicherzustellen, dass das Coffeescript dasselbe hat this als Umfang, in dem es platziert ist, weil Funktionen normalerweise nicht ihre erben this Objekt aus dem umgebenden Kontext.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top