Невозможно переопределить свойство: клиентская 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