インスタンスを拡張するクラス

function Foo(obj) {
  for(i in obj)
    this[i] = obj[i];
}

a = {
  a:"A",
  b:"B",
  c:"C",
  d: function() {
    print(this.a);
  }
};

foo = new Foo(a);

a.d();

foo.d();

ほんとはブラウザ上で

var tag = document.getElementById('foo');
var extag = new Foo(tag);

とかやりたいけど、無理かなぁ?ビルトインオブジェクトのfor/inの挙動ってよく分からないし。しかも遅そう。


オブジェクトを拡張するのに、拡張用のグローバル関数を定義するより、クラス(コンストラクタ)定義したほうがいいなぁとか考えて、書いてみたけど、うまく書けない。