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の挙動ってよく分からないし。しかも遅そう。
オブジェクトを拡張するのに、拡張用のグローバル関数を定義するより、クラス(コンストラクタ)定義したほうがいいなぁとか考えて、書いてみたけど、うまく書けない。