2
function A(){
this.a = {};
this.b = 0;
this.Test = function(value){
this.a.x = value;
this.b = value;
};
}
function B(){}
B.prototype = new A;
var b1= (new B());
b1.Test(1);
var b2= (new B());
b2.Test(2);
log(b1.b == 1); //true
log(b2.b == 2); //true
log(b1.a.x == 1);//false x == 2
log(b2.a.x == 2);//true
인스턴스가 필드를 공유하는 이유는 무엇입니까?JavaScript 필드 상속 된 이상한 동작
>이이 (가) 때문에 발생 개체가 B의 모든 인스턴스에서 공유됩니다. 그러나 b 필드와 함께 작동하는 이유는 무엇입니까? 왜 객체는 공유되었지만 간단한 유형이 아닌가? – dotneter
@dotneter :'a'는 객체입니다 :'this.ax = value;'당신은 자신의 속성을 만들고있는'this.b = value; '를 지정하여 모든 인스턴스가 공유하는 상속 된 객체를 수정합니다 현재의 객체 ('this')에서 상속 된 객체를 숨기고, 나의 예제에서와 같이'this.a = {x : value};'를 실행하면'this'가 가리키는 객체에 새로운 속성이 생성됩니다. – CMS