私の理解では、coffeescript関数の内部では、「this」または「@」は「window」と同じです(少なくともRailsのコンテキストでは)。それでは、なぜこのコードを機能させることができるのですか?
window.googletag = window.googletag or {}
window.googletag.cmd = window.googletag.cmd or []
window.googletag.cmd.push ->
window.googletag.defineSlot('/1003175/ad-name-here', [336, 280], 'div-gpt-ad-1349373630997-0').addService(window.googletag.pubads())
window.googletag.pubads().enableSingleRequest()
window.googletag.enableServices()
しかし、このコードではありません
@googletag = @googletag or {}
@googletag.cmd = @googletag.cmd or []
@googletag.cmd.push ->
@googletag.defineSlot('/1003175/ad-name-here', [336, 280], 'div-gpt-ad-1349373630997-0').addService(@googletag.pubads())
@googletag.pubads().enableSingleRequest()
@googletag.enableServices()
コードアラート(@ ==ウィンドウ)に配置すると、trueになります。それらが同じである場合、なぜ一方は機能し、もう一方は機能しないのでしょうか。このコードを記述してから、googletagという単語のすべてのインスタンスにウィンドウを追加するより優雅な方法はありませんか?