 <p>The problem is because you can't assign to a prototype property before the object definition is declared:</p> <p><strong>Doesn't work:</strong></p> <pre><code>function Parent() { this.parentProperty = "test"; } function Child() { // This doesn't work because the prototype is set inside of the definition this.prototype = new Parent(); } var child = new Child(); alert(child.parentProperty); </code></pre> <p><strong>Works</strong></p> <pre><code>function Parent() { this.parentProperty = "test"; } function Child() { // Define prototype outside of function constructor } Child.prototype = new Parent(); var child = new Child(); alert(child.parentProperty); </code></pre> <p><strong>Also notice that in the second example we assign to Child.prototype and not new Child().prototype</strong></p>