Dlaczego moje właściwości obiektów JavaScript są nadpisywane przez inne instancje?

Stworzyłem obiekt jak poniżej.

var BaseObject = function(){

var base = this;
base.prop;

base.setProp = function(val){
    base.prop = val;
}
}

Kiedy zadzwonię dosetProp metoda, otrzymuję następujące.

var a = new BaseObject();
var b = new BaseObject();           

a.setProp("foo");
b.setProp("bar");

console.log(a.prop); // outputs 'foo'
console.log(b.prop); // outputs 'bar'

Następnie stworzyłem inny obiekt, który dziedziczy zBaseObject lubię to.

var TestObject = function(){
    // do something
}

TestObject.prototype = new BaseObject();

Kiedy robię to samo, otrzymuję wynik, którego nie oczekiwałem.

var a = new TestObject();
var b = new TestObject();

a.setProp("foo");
b.setProp("bar");

console.log(a.prop); // outputs 'bar'
console.log(b.prop); // outputs 'bar'

Nie wiem dlaczego. Czytałem ostatnio wiele o zamknięciach i dziedziczeniu prototypów i podejrzewam, że wszystko to zostało zmieszane. Dlatego wszelkie wskazówki dotyczące tego, dlaczego ten konkretny przykład działa tak, jak powinny, zostałyby bardzo docenione.

questionAnswers(2)

yourAnswerToTheQuestion