Warum verwenden Sie den JavaScript -Funktionswrapper (in Coffeescript hinzugefügt) ".Call (this)"
-
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?
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.