== ECMAscriptのオブジェクト == オブジェクトは属性(プロパティ)の集まりである。 . {{attachment:object1.png}} ---- === オブジェクトの生成 === ==== 空オブジェクトを作成 ==== {{{ var obj = new Object(); }}} . {{attachment:object2.png}} ==== 属性とその値を指定して作成 ==== {{{ var obj = { 'name':'onigiri', 'price':150 }; }}} . {{attachment:object3.png}} ---- === 属性値の参照 === つぎの形式で参照できる。 . オブジェクト名.属性名 {{{ $ rhino js> var obj = { 'name':'onigiri', 'price':150 }; js> print( obj.name ); onigiri js> print( obj.price ); 150 js> obj.price = 130; js> print( obj.price ); 130 }}} ---- === 連想配列として利用 === 属性値を次の形式で参照できる。 この場合、属性名は文字列で指定する。 . オブジェクト名[属性名] {{{ $ rhino js> var obj = { 'name':'onigiri', 'price':150 }; js> print( obj['name'] ); onigiri js> key = 'price'; js> print( obj[key] ); 150 }}} ---- === すべての属性を調べる === {{{ var obj = { 'name':'onigiri', 'price':150 }; for (i in obj) { print( i, obj[i] ); } }}} ---- === call by value === 関数呼び出しで、引数が number, string, boolean のときは call by value である。 例 {{{ function add1(k) { k = k + 1; return k; } var n = 3; print( add1(n) ); print( n ); }}} 関数add1は引数に1を加え、その値を結果として返します。 . 引数に3を与えて呼び出すと4を返します。 . 変数nを引数としても、関数に渡されるのは値(call by value)です。 . 変数nの値は変化しません。 実行結果は {{{ 4 3 }}} === call by reference === 関数呼び出しで、引数がオブジェクトのときは call by reference である。 例 {{{ function addx(k) { k.x = k.x + 1; return k.x; } var m = { x:5 }; print( addx(m) ); print( m.x ); }}}