yposiのブログ

Web開発日記

RailsとJSの定義でなんだっけ?となったもの

RailsとJSの定義でなんだっけ?となったものについて簡単に調べました。

$(function () {
  // 処理
}

$.fn.hoge = function () {
  // 処理
}

function fuga() {
  // 処理
}

これらが同一ファイル内に記述されていて、それぞれの定義の違いがよくわからなかったので手元のメモを公開します。 正確には②がわかっていなかっただけなんだけど😅

①はページが読み込み完了し、DOMの構築が完了した時点でfunction()内が実行されます。
①はこの様にも書くことができます。

$(document).ready(function() {
  // 処理
});
jQuery(function(){ 
  // 処理
}

つまり、これでも書けることになる。

jQuery(document).ready(function(){
  // 処理
});

②は標準のjQueryオブジェクト$.fnに対してインスタンスメソッドを拡張しています。
つまり、これでも書けることになる。

jQuery.fn.hoge = function () {
  // 処理
}

Rails環境内でこの書き方を定義する場合、jQueryの拡張にあたるのでどこからでも呼べる様になる。
同一ファイル内で呼ぶメソッドをこの定義にする必要はない気がしてきた。
むしろ、メソッド名を奇跡的にもかぶらせたら挙動が変わってしまう可能性もあるなと思いました。

③はメソッドの定義ですね。

古いRailsのバージョンで動く、jsファイルに拡張に拡張を重ねた感じなんだろうけど②である必要はないのかな😅

Effective JavaScript

Effective JavaScript

  • 作者:David Herman
  • 発売日: 2013/02/19
  • メディア: 大型本