Cannot redefine property: clientWidth
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)); // {}