質問

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 周囲のコンテキストからのオブジェクト。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top