fake
и fake2
являются ссылками на один и тот же объект, поэтому вполне ожидаемо, что они ведут себя таким образом. Это не имеет ничего общего с наследованием.
Теперь, если вы хотите наследовать, один из способов (весьма наивно, я бы добавил) мог бы сделать это так:
var fake = { value:'test1'};
var fake2 = Object.create(fake); //creates a new object with fake as prototype
fake2.value = 'test5'; // "overrides" the value property from the prototype
console.log(fake.value);
, и тогда результат будет:
test1
Обратите внимание, что это из ECMAScript Edition 5 - который довольно недавний и может работать не во всех реализациях движка JavaScript.
Существует несколько способов реализовать / использовать наследование в JavaScript.Я собираюсь отослать вас к одному из объяснений в принятом ответе здесь .