Using object() method
Based on the idea that objects inherit from objects, Douglas Crockford advocates the use of an object() function that accepts an object and returns a new one that has the parent as a prototype:
    function object(o) { 
    function F() {} 
    F.prototype = o; 
    return new F(); 
    } 
If you need access to an uber property, you can modify the object() function as follows:
    function object(o) { 
    var n; 
    function F() {} 
    F.prototype = o; 
    n = new F(); 
    n.uber = o; 
    return n; 
    } 
Using this function is the same as using extendCopy(), you take an object such as twoDee, create a new object from it, and then proceed to augmenting the new object:
    var triangle = object(twoDee); 
    triangle.name = 'Triangle'; 
    triangle.getArea = function () { 
    return this.side * this.height / 2; 
    }; 
The new triangle still behaves the same way:
>triangle...