Разбираюсь с наследованием по руководству Флэнагана. Там указывается функция создания нового объекта наследующего прототип:
function inherit(p){
if (p==null) throw TypeError();
if (Object.create) {
return Object.create(p);
}
var t = typeof p;
if (t !== "object" && t !== "function") throw TypeError;
function f() {};
f.prototype = p;
return new f();
}
Работая с ней, к примеру, так:
var o = {};
o.x = 1;
var p = inherit(o);
p.x = 3;
я в итоге получаю вывод:
o: Object {x: 1}
p: Object {x: 3, x: 1}
Вопрос: почему свойство х дублируется, а не изменяется? Где я запутался?