Why *not* "inherit"/extend from Object in JavaScript?
<p>It is well-known that declaring objects with JSON notation makes them "inherit" from (or, more precisely, to be built like) the base Object:</p>

<p><code>myobj={a:1, b:2};</code> </p>

<p>which is <em>nearly</em> equivalent to <code>myobj = Object.create(Object); myobj.a=1; myobj.b=2;</code></p>

<p>and than:</p>

<blockquote>
  <p>Object.getPrototypeOf(myobj)</p>
</blockquote>

<p>prints the following:</p>

<pre><code>Object
    __defineGetter__: function __defineGetter__() { [native code] }
    __defineSetter__: function __defineSetter__() { [native code] }
    __lookupGetter__: function __lookupGetter__() { [native code] }
    __lookupSetter__: function __lookupSetter__() { [native code] }
    constructor: function Object() { [native code] }
    hasOwnProperty: function hasOwnProperty() { [native code] }
    isPrototypeOf: function isPrototypeOf() { [native code] }
    propertyIsEnumerable: function propertyIsEnumerable() { [native code] }
    toLocaleString: function toLocaleString() { [native code] }
    toString: function toString() { [native code] }
    valueOf: function valueOf() { [native code] }
</code></pre>

<p>However, one can call <code>Object.create()</code> while supplying <code>null</code> as an argument:</p>

<pre><code>myobj2 = Object.create(null);
</code></pre>

<p>In this case empty prototype will be returned:</p>

<pre><code>Object
    No Properties
</code></pre>

<p>And here goes the question: in which cases and why should I care to break the prototype chain to the original <code>Object</code>? Where it can be useful? </p>

<p><strong>Update:</strong> as already corrected down below, I mean <code>Object.create(Object.prototype)</code> rather than <code>Object.create(Object)</code> that would return <code>Function</code> object (indeed <code>Object()</code> is a constructor function for <code>Object</code> prototypees).</p>
