JavaScript入門 (4)
オブジェクト
JavaScriptではオブジェクトはPerlのhashに似ており,属性名と属性値のペアから構成される.
js> obj = {name:"Tom", sex:"male"} [object Object] js> obj [object Object] js> obj.name Tom js> obj.sex male js> obj.age = 20 20 js> obj.age 20
後から属性を追加するすることもできる
js> obj.age = 20 20 js> obj.age 20
オブジェクトの属性値にオブジェクトを入れることもできる.
js> obj.name = {first:"John", last:"Lennon"} [object Object] js> obj.name.first John
配列
配列は"[]"かArrayを用いて生成される.
js> var ary = new Array() js> var ary2 = [1, 3, 5] js> ary2 1,3,5
インデクシングは[]を用いて行う
js> ary2[0] 1 js> ary2[1] 3 js> ary2[2] 5
配列の大きさを超えたインデックスに値を代入することも出来る
js> ary2[4] = 9; 9 js> ary2 1,3,5,,9
空要素の",,"は配列を生成するときにも利用できる.
js> ary3 = [2,4,,8] 2,4,,8 js> ary3[2] js> typeof ary3[2] undefined ||< 配列はオブジェクトの一種であり属性名が数値であるとみなすことができる.逆にオブジェクトも "[]"でその属性にアクセスすることができる. >|| js> typeof ary object js> obj.name.first John js> obj["name"]["first"] John
配列に関する操作は以下のようなものがある.多くの物が直感的な名前がつけられている.
js> ary = [1,2,3] 1,2,3 js> ary.length 3 js> ary.pop() 3 js> ary 1,2 js> ary.push(3) 3 js> ary 1,2,3 js> ary.shift() 1 js> ary 2,3 js> ary.unshift(1) 3 js> ary 1,2,3 js> ary.reverse() 3,2,1 js> ary 3,2,1 js> ary.join("\t") 3 2 1 js> ary.concat([1,2,3]) 3,2,1,1,2,3 js> ary = ["this", "will", "be", "sorted"] this,will,be,sorted js> ary.sort() be,sorted,this,will
オブジェクトの操作
オブジェクトにある属性を列挙したい場合はforを用いる
obj = {name:"John", age:25, sex:"male"}; for (var k in obj) { print(k + ": " + obj[k]); }
$ js sample.js name: John age: 25 sex: male
for eachを用いると値の方を列挙できるのだが,これは配列向けかな
ary = [1,3,5,7,9]; for each (var e in ary) { print(e); }
$ js sample.js 1 3 5 7 9
deleteを用いると属性を消すことができる
js> delete obj.sex true js> typeof obj.sex undefined
inは属性名があるかどうかを調べることができる
js> "name" in obj true
withは<オブジェクト名>.<属性名>のオブジェクト名部分を省略して参照することができる
js> with (obj) { print(name); print(age); print(sex); } John 25 male js>