- 52 名前:デフォルトの名無しさん mailto:sage [04/01/07 01:29]
- JavaScriptは本物のプロトタイプベース言語とは言えないと思う。
var obj = new Object(); と書いて生成された obj が参照するプロトタイプは、 obj.prototype ではなく、 Object.prototype だ。 だから、オブジェクトのプロトタイプを、生成された個々のオブジェクトごとに 変更することができない。プロトタイプの変更は、同一のコンストラクタから生成された オブジェクトすべてに影響が及んでしまう。 プロトタイプをオブジェクトごとに、自由に変更できるようにするためには、 オブジェクト一つごとにコンストラクタを一つずつ、用意しなければならない。 まるでクラスベースの型制約に近い不自由さを感じるのだけど。 こんな風に書けたらよかったのに。 var obj; obj.foo = function(){ alert("ふー!"); }; var obj2; obj2.prototype = obj; obj2.foo(); // "ふー!" と表示。 どうしてこうならなかったんだろう?
|

|