私は次のコードを持っています。文字列変数が独立しているのに、なぜ3つのオブジェクトがすべて同じ配列を参照するのでしょうか?どのように明示的に追加することなく、それを修正することができる:関数Bを(){this.arr = [];}javascriptでプロトタイプを使用した継承
function A(){
this.text = "";
this.arr = [];
this.action = function(){
this.text+="z";
this.arr.push(1);
}
this.test = function(){
console.log(this.text+"|"+this.arr);
}
}
function B(){
}
B.prototype = new A();
B.prototype.constructor = B;
var B1 = new B();
var B2 = new B();
var B3 = new B();
B1.action();
B2.action();
B3.action();
B1.test(); //z|1,1,1
B2.test(); //z|1,1,1
B3.test(); //z|1,1,1
親コンストラクタが行うことをすべて繰り返すのではなく、 'function B(){A.コール(this)}'を使うべきです。説明のために – Bergi