JavaScript関数ラッパー(Coffeescriptに追加)を使用する理由
-
13-10-2019 - |
質問
Coffee-Scriptの最新(1.0)リリースを使用すると、単純なJavaScript出力が次のようになります(デフォルト):
(function() {
var a;
a = 1;
}).call(this);
何をしますか .call(this) それを追加する理由は何ですか?
解決
関数を作成し、親機能/オブジェクトの範囲で自分自身を呼び出しています。
.call and .applyは、関数を呼び出すさまざまな方法です。基本的に、独自の範囲内でa = 1を設定する以外に何も行わない関数を作成しました。
JavaScriptでは、すべての関数がオブジェクトであることを認識する必要があり、 this
現在のオブジェクト/関数を指すものです。使用 .call(this)
オーバーライド this
関数内から、それを呼び出しコンテキストからのものに置き換えます。
他のヒント
これは、コンパイルされたCoffeescriptが変数名の独自の範囲を確保する方法です。これには、効率とシンプルさの点で利点があります(生成されたJavaScriptは、他のコードで使用されている変数を踏みつけません)。で無効にすることができます --bare
(また -b
)CoffeeScriptコンパイラへのオプション。
の理由 call(this)
コーヒースクリプトが同じであることを確認するためだけです this
機能が通常継承されないため、配置されているスコープとして this
周囲のコンテキストからのオブジェクト。
所属していません StackOverflow