Почему мои свойства объекта 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'
Я нене знаю почему. Я'Я недавно много читал о замыканиях и наследовании прототипов, и я подозреваю, чтомы все запутались. Поэтому любые указания на то, почему этот конкретный пример работает так, как он работает, будут с благодарностью.