function Entity() {
this.a = {a: 4};
this.b = 5;
}
function Thing() {}
Thing.prototype = new Entity;
var thing1 = new Thing;
thing1.a.a = 3;
thing1.b = 4;
var thing2 = new Thing;
console.log(thing2.a.a); // prints 3 instead of 4. I would like 4.
console.log(thing2.b) // prints 5 as wanted
У меня проблемы с настройкой прототипического наследования в javascript.В идеале я хочу, чтобы и thing1, и thing2 имели свою собственную чистую копию "нового прототипа сущности".
с использованием this.__proto__
- это то, чего я хочу избежать
[Edit]
У меня есть приблизительное представление о том, как это работает.
Настройка thing1.b устанавливает свойство b в экземпляре Thing.который не касается Entity.b, определенного в цепочке прототипов.
Где, как установка thing1.aa для экземпляра Thing, не может быть выполнена, потому что он выдаст ошибку «не могу установить неопределенное». Это , когда он идет вверх по цепочке прототипов, чтобы найти Entity.a, который определен и устанавливает Entity.aa в новое значение.
[Дальнейшее редактирование]
As @IvoWetzel говорит, что настройка thing1.b не затрагивает цепочку прототипов, потому что настройка свойств этого не делает.Где, как установка thing1.aa делает два шага. getter на thing1.a, который касается цепочки прототипов, за которым следует установщик .a