JavaScriptでの配列リテラルとオブジェクトリテラルとeval
- 配列リテラルは、 大括弧して["aaa", "bbb", "ccc"] のようなもの。
- オブジェクトリテラルは、中括弧して{"aaa":"111", "bbb":"222"}のようなもの。
- evalは、引数をJavaScriptとして評価してその結果を返す。
- 配列リテラルは、リストを大括弧して変数に格納すると配列になる。
- 配列リテラルのフォーマットの文字列をevalすると配列になる。
- オブジェクトリテラルは、対リストを中括弧して変数に格納するとハッシュになる。
- オブジェクトリテラルのフォーマットの文字列をevalするとハッシュになる。
サンプルソース
<html> <body> <script type="text/javascript"> //---配列テスト-------- document.write("---配列テスト--------<br>"); // 配列作成は new Arrayと配列リテラルの2通りある // var a = new Array("aaa", "bbb", "ccc"); // 配列リテラルで配列作成(リストを大括弧) var a = ["aaa", "bbb", "ccc"]; for (var i in a) { document.write("a["+i+"]の値 = "+a[i]+"<br>"); } // eval関数を使うと文字列から配列作成ができる var b = '["ddd", "eee", "fff"]'; document.write(b+"<br>"); c =eval(b); for (var i in c) { document.write("c["+i+"]の値 = "+c[i]+"<br>"); } //---ハッシュテスト-------- document.write("---ハッシュテスト--------<br>"); //オブジェクトリテラルでハッシュ作成(対リストを中括弧) var a = {"aaa":"111", "bbb":"222", "ccc":"333"}; for (var i in a) { document.write("a["+i+"]の値 = "+a[i]+"<br>"); } // eval関数を使うと文字列からハッシュ作成ができる var b = '{"ddd":"444", "eee":"555", "fff":"666"}'; document.write(b+"<br>"); c =eval("("+b+")");// 小括弧しているのは、オブジェクトリテラルとして認識させるため // ちなみに小括弧しないと『"ddd"』がラベルとして認識されエラーとなる for (var i in c) { document.write("c["+i+"]の値 = "+c[i]+"<br>"); } </script> </body> </html>
サンプル実行結果
---配列テスト-------- a[0]の値 = aaa a[1]の値 = bbb a[2]の値 = ccc ["ddd", "eee", "fff"] c[0]の値 = ddd c[1]の値 = eee c[2]の値 = fff ---ハッシュテスト-------- a[aaa]の値 = 111 a[bbb]の値 = 222 a[ccc]の値 = 333 {"ddd":"444", "eee":"555", "fff":"666"} c[ddd]の値 = 444 c[eee]の値 = 555 c[fff]の値 = 666
とにかく、オブジェクトリテラルは、昨今のajaxやprototype.js等を理解するには必須の項目です。
それから、オブジェクトリテラルには、ハッシュだけでなく、メソッドも定義することができます。
これに関しては、次回につづきます。