Почему мои свойства объекта JavaScript перезаписываются другими экземплярами?

Я создал объект, подобный следующему.

var BaseObject = function(){

var base = this;
base.prop;

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

Когда я звонюsetProp Метод, я получаю следующее.

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'

Затем я создал еще один объект, который наследует отBaseObject как это.

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

TestObject.prototype = new BaseObject();

Когда я делаю то же самое, я получаю результат, который я нене ожидаю.

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'

Я нене знаю почему. Я'Я недавно много читал о замыканиях и наследовании прототипов, и я подозреваю, чтомы все запутались. Поэтому любые указания на то, почему этот конкретный пример работает так, как он работает, будут с благодарностью.

Ответы на вопрос(2)

Ваш ответ на вопрос