最初はそれは明らかではありません。これがスケルトンです。
$.fn.ourFunction = do ($=jQuery) -> (opts) ->
# do stuff
@
これは次のようにコンパイルされます。
$.fn.ourFunction = (function($) {
return function(opts) {
return this;
};
})(jQuery);
わかりやすくするために、これを複数の行に分割することもできます。
$.fn.ourFunction = do ($=jQuery) ->
(opts) ->
# do stuff
@
最初の行では、do
最初に関数を実行する構文を使用しています。パラメータ (例: $
) とその値 (例: ) を指定することもできますjQuery
。
$.fn.ourFunction = do ($=jQuery) ->
2 行目は、返される関数を作成します。CoffeeScript ではすべてが式であるため、言う必要はありませんreturn (opts) ->
(ただし、言うことはできます)。
(opts) ->
次に、もちろん、実際の作業が行われるコードの本体があります。最初のコードで省略したトリックの 1 つは、=>
演算子を使用してスコープを維持することです。スクロール ハンドラー内で、this
ターゲット オブジェクトのままにすることができます。呼び出すことができ$('#something').ourFunction()
、効果的$('#something').something()
にスクロール ハンドラを呼び出します。
$.fn.ourFunction = do ($=jQuery) ->
(opts) ->
$(window).scroll =>
this.something()
@something()
@
最後の行は単なる@
文字です。を返すため、これにより連鎖が可能になりますthis
。あるいは、最後の行で別の連鎖可能なメソッドを onthis
で呼び出す場合は、明示的にする必要はありません。
$.fn.flash = do ($=jQuery) -> (opts) ->
@animate(opacity: 0).delay()
.animate({opacity: 1})