JavaScript Diary

オブジェクトのプロパティ [ 2001/06/04 ]
オブジェクトのプロパティを調べたいときよく下のように書きます。
var text = "" ;
for( var i in document ) text += i + " : " + document[i] + "\n" ;
alert( text );
これを実行すると、document オブジェクトのプロパティがメソッドも含み全て text に代入される訳ですが、これに疑問を感じる方はいませんか? 今となってはあたり前などと思いますが、昔は疑問を持っていました。 それは配列を使用しているということです。例えば、document.writedocument["write"] となっているのです。 つまり、下の2文は同じことをしているというわけです。
document.write( "hello" );
document["write"]( "hello" );
これが出来るのならば逆の発想。プロパティの追加もこれで出来ないかと考えてしまいます。 結果できちゃいました。下の例。
var obj = new Object();

obj["prop"] = 5 ;
status = obj.prop ;

obj["method"] = function( a ){ return alert( a ); };
obj.method( "hello" );
この書き方は JavaScript を柔軟にする上で、非常に強力です(連想配列という言葉を知ってた人には当たり前のことなんですがね)。これを知らなかった人、なんかウキウキしませんか?・・・しないか(笑)