高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

JScriptでのプロトタイプの扱い

JScriptではプロトタイプを宣言してオブジェクト指向なコードを実現できますが、オブジェクトでほかのオブジェクト(Arrayなど)を使うときには、そのオブジェクト初期化のコードはプロトタイプには書かずコンストラクタに書く必要があります。
具体的には

var Class = function(){};
Class.prototype =
{
  array: new Array()
};

というような書き方はだめで、

var Class = function(){ this.array = new Array(); };
Class.prototype =
{
  array: undefined // 見た目上、arrayプロパティがあるということを明示しておく
};

と書く必要があります。最初のコードだとすべてのClassインスタンスのClass.arrayオブジェクトが共有されてしまい、クラスにまとめる意味がなくなってしまいます。
どちらにせよ初期化コードはコンストラクタに書くべきだと思うので、お行儀よくコーディングをしていれば問題にはならないのでしょうが、ちょっとはまったのでメモ程度に書いておきます。