Разбираюсь с наследованием по руководству Флэнагана. Там указывается функция создания нового объекта наследующего прототип:
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} 
Вопрос: почему свойство х дублируется, а не изменяется? Где я запутался?