てきとうなメモ

本の感想とか技術メモとか

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>