JavaScriptチートシート
HTML5の時代の必須知識、JavaScriptを記述、読解するためのポイントを手短に書きます。以下、CやC++,Javaを使ってきた方むけのカンニングペーパーです。
まずなんでもオブジェクトということを理解しましょう。
- JavaScriptの変数(オブジェクト)
var num1 = 1; var num2 = 2; var num3 = num1+num2; //数字は足し算 var str1 = "string1"; var str2 = "string2"; var str3 = str1 + string2; //文字列連結 //オブジェクトの生成1 var obj = new Object(); //オブジェクトの生成2 var obj = {};
JavaScriptでは配列もオブジェクトです。配列リテラルでかけるのも特徴的ですかね。
- 配列オブジェクトの操作
//配列リテラルで初期値ありで配列を生成 var foo = [ 1 , 2 , 3 ]; foo[0] = 1; //配列オブジェクトをコンストラクタで生成、あとで値を埋める var bar = new Array(3); // new Array();のみでサイズ 0 の配列 bar[0] = 1; //配列の最後尾に追加する bar.push( 4 );
オブジェクトは連想配列でメンバーを持ちます。配列だけでなく連想配列の形でもかけます。これもリテラルで記述できるのも特徴的ですね。
//リテラルで生成する(JSON) var foo = { x: 1 , y: 2 , z: 3 } foo[x] = 1; //foo[x]をプロパティとして扱うこともできます。 var foo={} foo.x = 1;
- 関数定義
//関数定義 function foo( param ){ var ret = "Hello "+param +" !"; return ret; } //即時関数(その場で処理される関数を無名のまま定義し、実行します。名前がかぶらなくなるので安全にプログラムができます。JavaScriptではグローバルな名前を使用しないように気をつけます) onclick="function(){ xxxxxx }();"
//コンストラクタ function Foo( param ){ //メンバー this.param = param; //メソッド this.foo = function(){ ..... }; } //オブジェクト生成 var obj = new Foo( 1 ); //メンバーへアクセス console.log( obj.param ); //1を表示 //関数へアクセス obj.foo( );
簡単な変数や関数名をつけてしまうと重複する可能性があるので、できるだけ名前空間を人為的に作ります。即時関数の返り値を取得するオブジェクトを作ります。この関数スコープ中でだけ有効なものはプライベートとなり、配列内にもつものはグローバルオブジェクト経由で取り出せます。
var global = (function() { var private = "private"; // var private_func = function(){ .... } ... var ret = { public: 1, ... }; ret.method = function(){ ... private_func(); //プライベートはこの即時関数内だけで利用可能 }; return ret; // retにはメンバーとメソッドがある })(); //globalとつくので、名前バッティングしにくい global.public = 1; global.method();
列挙は下記のようにかけます。
- 列挙
//列挙 var FooEnum = { X: 1 , Y: 2 , Z: 3 }; var bar = FooEnum.X; switch( bar ){ case FooEnum.X: .... case FooEnum.Y; ....
文法になれない間は読みにくいソースもあるかもしれません。
- 読みにくい例
//長さ2の配列のオブジェクトと、オブジェクトをその場でつくってfoo関数の引数としてfooを呼ぶ foo([ { X: 1 , Y: 2 , Z: 3 }, { X: 2 , Y: 3 , Z: 4 }, ], { X: 3 } ); //手順を一段階ずつにすると、 var array = new Array(2); array[0] = new Object(); array[0].X = 1; array[0].Y = 2; array[0].Z = 3; array[1] = new Object(); array[1].X = 2; array[1].Y = 3; array[1].Z = 4; var obj = new Object(); obj.X = 3; foo( array , obj );