All Object’s Methods and Variables and Array is hash.

今のお仕事の環境下でなにか便利なスクリプトを作ろうとした場合に,RubyとかPythonとかPerlという選択肢は,新しくインストールする作業が必要というだけで,難しい.そこで,すでにWindowsにデフォルトでインストールされているWindows Script Hostを使ったJScriptVBScriptを使うことになる.
VBScriptでも問題なかったのだが,なんとなくおもしろそうだったのでJScriptを使うことに.しかし,この言語はクラスベースのオブジェクト指向言語に慣れていると扱いが難しいのではないだろうか.
JScriptはいわゆるプロトタイプベースのオブジェクト指向言語なので,クラス宣言というものが存在しない.よって,オブジェクトを生成した後に,メソッドに関数を割り当てる.ここまではよい.
しかし,問題はここから.オブジェクトのユーザーが割り当てたメソッドやメンバ変数はすべてハッシュであり,配列もハッシュで格納される.つまり,以下は同じ意味になる.

obj[1] = 1;
obj.1 = 1;

メソッドはprototypeというハッシュに入れてしまえばよいので,こんな感じ.

function foo(){
return "hoge";
}
obj.prototype.piyo = foo;
obj.piyo();

みたいな感じ.

面白そうなので使ってみたが,for inを使ってその該当オブジェクトの配列の要素をすべて抽出しようとすると,配列の値だけでなく,割り当てたメソッドまで出力されてしまう.例えば,

obj[piyo];

とやると,function fooのコードが出てくる.
使えない・・・.VBScriptに戻そうかなぁ.