31

最新(1.0)リリースのcoffee-scriptを使用すると、単純なjavascript出力は次のようになります(デフォルト)。

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

.call (this)は何をし、それを追加する理由は何ですか?

4

2 に答える 2

34

これは、コンパイルされたCoffeeScriptが変数名に対して独自のスコープを持っていることを確認する方法です。これには、効率と単純さの点で利点があります(生成されたJavaScriptは、他のコードで使用されている変数を踏みにじることはありません)。CoffeeScriptコンパイラの--bare(または)オプションを使用して無効にすることができます。-b

関数は通常、周囲のコンテキストからオブジェクトを継承しないため、の理由はcall(this)、CoffeeScriptが配置されているスコープと同じであることを確認するためだけです。thisthis

于 2010-12-28T00:59:53.263 に答える
15

関数を作成してから、親関数/オブジェクトスコープを使用して自分自身を呼び出します。

.callと.applyは、関数を呼び出すための異なる方法です。基本的に、独自のスコープ内でa=1を設定する以外は何もしない関数を作成しました。

thisjavascriptでは、すべての関数がオブジェクトであり、現在のオブジェクト/関数を参照していることを理解する必要があります。.call(this)関数内からオーバーライドを使用thisし、呼び出し元のコンテキストからのオーバーライドに置き換えます。

于 2010-12-28T00:59:51.350 に答える