Невозможно переопределить свойство: клиентская Whidth

Properties defined through Object.defineProperty() are, by default, non-configurable.

To allow them to be redefined, or reconfigured, they have to be defined with this attribute set to true.

var o = Object.create({});

Object.defineProperty(o, "foo", {
    value: 42,
    enumerable: true,
    configurable: true
});

console.log(o); // { foo: 42 }

Object.defineProperty(o, "foo", {
    value: 45,
    enumerable: true,
    configurable: true
});

console.log(o); // { foo: 45 }
o.prototype is undefined because objects don't typically have prototype properties.

Such properties are found on constructor functions for new instances to inherit from, roughly equivalent to:

function Foo() {}

//  ... = new Foo();
var bar = Object.create(Foo.prototype);
Foo.call(bar);
Object are, however, aware of their prototype objects. They're referenced through an internal [[Prototype]] property, which __proto__ is/was an unofficial getter/setter of:

console.log(o.__proto__); // {}
The standardized way to read the [[Prototype]] is with Object.getPrototypeOf():

console.log(Object.getPrototypeOf(o)); // {}
Open Octopus