 <p>Every object has an internal property, [[Prototype]], linking it to another object:</p> <pre><code>object [[Prototype]] -&gt; anotherObject </code></pre> <p>Some environments expose that property as <code>__proto__</code>:</p> <pre><code>anObject.__proto__ === anotherObject </code></pre> <p>You create the [[Prototype]] link when creating an object:</p> <pre><code>var object = Object.create( anotherObject ) // imagine: // object.__proto__ = anotherObject </code></pre> <p>In traditional javascript, the linked object is the <code>prototype</code> property of a function:</p> <pre><code>object [[Prototype]] -&gt; aFunction.prototype </code></pre> <p>and you create the [[Prototype]] link with <code>new</code> (but this isn't obvious):</p> <pre><code>var object = new aFunction; // imagine: // object.__proto__ = aFunction.prototype; </code></pre> <p>Remember:</p> <ul> <li>Every object has a link, [[Prototype]], sometimes exposed as <code>__proto__</code>.</li> <li>Every function has a <code>prototype</code> property. It may be a <strong>source</strong> of values shared with other objects, or it may go unused.</li> </ul>