Object.prototype.__delegated__ = function(x) { function f() { } f.prototype = this var r = new f() if (x) for (var prop in x) if (x.hasOwnProperty(prop)) r[prop] = x[prop] return r } C = { initialize: function(args) { ... }, x: undefined, y: undefined } D = C.__delegated__({ initialize: function(args) { C.initialize.apply(this, args) z = 5 }, z: undefined }) x = {a: 1, b: 2} y = x.__delegated__({c: 3}) y.a1 y.b2 y.c 3