¿Por qué las propiedades de mis objetos JavaScript se sobrescriben con otras instancias?
Creé un objeto como el siguiente.
var BaseObject = function(){
var base = this;
base.prop;
base.setProp = function(val){
base.prop = val;
}
}
Cuando llamo alsetProp
Método, me sale lo siguiente.
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'
Entonces creé otro objeto que hereda deBaseObject
Me gusta esto.
var TestObject = function(){
// do something
}
TestObject.prototype = new BaseObject();
Cuando hago lo mismo, obtengo un resultado que no esperaba.
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'
No se por que He estado leyendo mucho sobre cierres y herencia prototípica recientemente y sospecho que lo he confundido todo. Por lo tanto, cualquier sugerencia sobre por qué este ejemplo en particular funciona de la manera en que lo hace sería muy apreciada.