Javascriptの俺俺ルール

混乱するのでこうすることに決めた。

/* 俺俺ルール 
 * jQueryを使う、という前提。JSは謙抑的であるべきとおもう。
 */

/* 1.普通につくる分にはグローバルにfunctionを並べる方
 * グローバル汚染とかキニスンナ。
 * JSは見た目をちょこっと弄るのが目的だしそれで終わらせるべき
 * 絶対的に分かりやすい。 
 */
function hoge(){
  console.log("hoge");
}
hoge();

/* 2.関数が増えて訳がわからない時は
 * ネームスペース的に関数を整理したいときはクロージャーをつくり
 * プロパティーに関数を設定すれば見やすい。
 */
var NamespaceA = function(){};
NamespaceA.fuga = function(){
    console.log("a_namespace.fuga");
};
NamespaceA.fuga();

/* これも同義だが 1 と見分けが付きにくいので使いたくない
function NamespaceA(){}
NamespaceA.fuga = function(){
  console.log("a_namespace.fuga");
};
NamespaceA.fuga();
*/

/* どうしてもデータ構造を作らないと行けないときにprototypeを使う。
 * jQueryなど便利アイテムを使っていて尚さらにprototypeとかしないと
 * ダメな時はJS依存が強すぎで負けなきがしている。。
 */
var ModelA = function(){};
ModelA.prototype = {
  field_a   : "Hello Prototype",
  method_a  : function (msg){console.log(msg);}
};
var a_obj = new ModelA();
a_obj.method_a(a_obj.field_a);

/* コレも同義だが{}の方が構造定義というのが見やすいので使わない
var ModelA = function(){};
ModelA.prototype.field_a = "Hello Prototype";
ModelA.prototype.mathod_a= function (msg){console.log(msg);}
var a_obj = new ModelA();
a_obj.method_a(a_obj.field_a);
*/