最新(1.0)リリースのcoffee-scriptを使用すると、単純なjavascript出力は次のようになります(デフォルト)。
(function() {
var a;
a = 1;
}).call(this);
.call (this)は何をし、それを追加する理由は何ですか?
最新(1.0)リリースのcoffee-scriptを使用すると、単純なjavascript出力は次のようになります(デフォルト)。
(function() {
var a;
a = 1;
}).call(this);
.call (this)は何をし、それを追加する理由は何ですか?
これは、コンパイルされたCoffeeScriptが変数名に対して独自のスコープを持っていることを確認する方法です。これには、効率と単純さの点で利点があります(生成されたJavaScriptは、他のコードで使用されている変数を踏みにじることはありません)。CoffeeScriptコンパイラの--bare
(または)オプションを使用して無効にすることができます。-b
関数は通常、周囲のコンテキストからオブジェクトを継承しないため、の理由はcall(this)
、CoffeeScriptが配置されているスコープと同じであることを確認するためだけです。this
this
関数を作成してから、親関数/オブジェクトスコープを使用して自分自身を呼び出します。
.callと.applyは、関数を呼び出すための異なる方法です。基本的に、独自のスコープ内でa=1を設定する以外は何もしない関数を作成しました。
this
javascriptでは、すべての関数がオブジェクトであり、現在のオブジェクト/関数を参照していることを理解する必要があります。.call(this)
関数内からオーバーライドを使用this
し、呼び出し元のコンテキストからのオーバーライドに置き換えます。