プログラミングノート

一からものを作ることが好きなエンジニアの開発ブログです。

オブジェクトについて

いきなりライブラリを読んでも分からないのでまず基本から。

ハッシュが基本

ハッシュは キーと値をコロンで区切って宣言。
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のデータってどうかくんだっけ?どうやってアクセスするんだっけ?といつも思っていたのが、今回の調べもので解決。