起初它並不明顯。這是骨架。
$.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) ->
我們的第二行創建一個返回的函數。請記住,CoffeeScript中的所有內容都是表達式,所以我們不需要說return (opts) ->
(但可以)。
(opts) ->
然後,當然,我們的代碼的主體,實際工作發生的地方。我忽略了最初代碼中的一個技巧是使用=>
運算符來維護範圍。在我們的滾動處理程序中,我們可以強制this
保持我們的目標對象。我們可以撥打$('#something').ourFunction()
,我們有效地在我們的滾動處理程序中調用$('#something').something()
。
$.fn.ourFunction = do ($=jQuery) ->
(opts) ->
$(window).scroll =>
this.something()
@something()
@
我們的最後一行是簡單的@
字符。這允許鏈接,因爲我們正在返回this
。或者,如果我們的最後一行在this
上調用另一個可鏈接方法,我們不需要明確說明。
$.fn.flash = do ($=jQuery) -> (opts) ->
@animate(opacity: 0).delay()
.animate({opacity: 1})
好點。這更簡潔:-) – FakeRainBrigand