オブジェクトについて
いきなりライブラリを読んでも分からないのでまず基本から。
ハッシュが基本
ハッシュは キーと値をコロンで区切って宣言。
2通りの方法でアクセスできる。
var hash = { 'key1':'val1', 'key2':'val2'}; alert(hash['key1']); alert(hash.key1);
配列も['0']でアクセスできるので、実はハッシュ。ただし、ハッシュにはない特殊なプロパティ(lengthとか)を持っているので、厳密に言えば違う。
var array = ['val1', 'val2']; alert(array[0]); alert(array['0']); //同じ結果になる var hash = {0:'val1', 1:'val2'}; alert(hash[0]); alert(hash['0']);
プロパティ
プロパティもただのハッシュエントリー
var hash = {0:1, 1:2, 2:3}; hash.foo = 'bar'; //プロパティ追加 var array = [1,2,3]; array.foo = 'bar'; //プロパティ追加
まとめて書くとこう
var hash = {0:1, 1:2, 2:3, 'foo':'bar'};
関数オブジェクト
var fn = function(){ alert('hello') };
この書き方が謎だったんだけど、これは今まで良く書いていた
function fn(){ alert('hello') };
と同じこと。こうすると、普通の変数のようにオブジェクトのプロパティに指定できる。(function(){} を無名関数という)
var hash = { 'key1':'val1', 'key2':'val2'}; hash.fn = function(){ alert('hello') }; hash.fn();
これがJavascriptのメソッドらしい。
まとめて書くとこうなる。
var hash = { 'key1':'val1', 'key2':'val2', 'fn':function(){ alert('hello') }};
その他
ハッシュの走査は for in、配列の走査は length で。
var hash = { 'key1':'val1', 'key2':'val2'}; for( var i in hash){ alert(i); } var array = [1,2,3]; for ( var i=0, n=array.length; i<n; i++){ alert(array[i]); }
JSONのデータってどうかくんだっけ?どうやってアクセスするんだっけ?といつも思っていたのが、今回の調べもので解決。