私はPrototype/jQueryを使わずにJavaScriptでオブジェクト指向のプログラミングをしています(私は他のもののためにjQueryを使用しています)。これまではうまくいきましたが、私は継承に関する問題に遭遇しました。基本的に、コンストラクタでオブジェクトを宣言すると、インスタンス間でオブジェクトが共有されます。以下にいくつかのサンプルコードである:Javascriptの継承 - コンストラクタで宣言されたオブジェクトはインスタンス間で共有されますか?
A = function()
{
this.y = new Array();
}
A.prototype.doStuff = function(n)
{
this.y.push(n);
}
B = function()
{
}
B.prototype = new A();
var b1 = new B();
var b2 = new B();
b1.doStuff(100);
b2.doStuff(200);
console.log("b1:");
console.log(b1);
console.log("b2:");
console.log(b2);
これはb1
とb2
両方の配列[100, 200]
を出力します。私が欲しいのは、b1
とb2
はy
のための独自の別の配列を持つことです。これについてどうすればいいですか?
(PSは。私はしかし、私はむしろ、そのクラスのシステムを使用するように私のコードの束を書き換えないでしょう。プロトタイプのクラスシステムは、このためで構築された何かを持っていると仮定)
はい - 私はあなたのブログ記事に書いたようなことをやりました。基本的に、 'target 'のインスタンス固有の変数を初期化する別の' construct(target) '関数があります。子供たちはスーパークラスでこれを呼びます。特にかわいいですが、うまくいくようです。 –