小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

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

とにかく、オブジェクトリテラルは、昨今のajaxprototype.js等を理解するには必須の項目です。
それから、オブジェクトリテラルには、ハッシュだけでなく、メソッドも定義することができます。
これに関しては、次回につづきます。