Herança direta de javascript

Implementação:

var _with = function(proto, overrides) {
if (!overrides) overrides = {};

// that's the trick
var ctor = function() { this.__proto__ = proto; };
ctor
.prototype = proto;
var child = new ctor();
// 'child'.[[Prototype]] pseudoproperty is set to 'proto' now
// and real 'child.__proto__' property added

for (var prop in overrides)
if (overrides.hasOwnProperty(prop))
child
[prop] = overrides[prop];
return child;
};

Exemplo de uso:

var Clazz = { 
x
: 10,
y
: 20,
method
: function() {
return this.x;
},
method2
: function() {
return this.__proto__.x; // referencing parent
}
};
var DerivedClazz = _with(Clazz, {x: 15});

var instance = _with(DerivedClazz);
alert
(instance.y); // 20
instance
.x = 100;
alert
(instance.x); // 100
alert
(instance.method()); // 100
alert
(instance.method2()); // 15
alert
(DerivedClazz.x); // 15
alert
(Clazz.x); // 10

Conforme descrito aqui: http://tonsky.livejournal.com/244260.html