のコードは以下の通りですjavascript関数:このプロトタイプ
function A() {
this.name = "kl";
this.obj2 = { a: 1 };
}
A.prototype.city = "china";
A.prototype.obj = {age: 30};
var a = new A();
var b = new A();
a.name = "kobe";
a.obj.age = 20;
a.city = "American"
a.obj2.a = 30;
console.log(b.name); // k1
console.log(b.city); // why china ?
console.log(b.obj); // when b.city = china, why b.obj = {age: 20}
console.log(b.obj2); // {a: 1}
私の意見はあなたがすることはできませんあなたはこの[プロパティ]を編集する方法およびbは、この独自のを持っているということですので、独自のthis.valueを変更します。
プロパティは共有プロパティを宣言していますか?は正しい ? しかし、objが変更されたときにb.obj、 に変更するとb.cityに影響しませんか?
あなたは価値観を共有するために、プロトタイプのメカニズムを使用したいと思うでしょうケースを印刷しますインスタンス間。それはあなたが見つけたような理解しにくい行動を引き起こす可能性があります。このプロトタイプは、インスタンス間で共有される**メソッド**のリポジトリと考える方が安全です。 –