Recientemente me di cuenta de que en realidad es posible cambiar un prototipo de objetos en V8/node. ¡Si bien esto no está en el estándar, es posible en varios navegadores y especialmente en V8/node!
function User(username, email) {
this.username = username;
this.email = email;
}
User.prototype.sendMail = function (subject, text) {
mailer.send(this.email, subject, text);
};
var o = {username: 'LoadeFromMongoDB', email: '[email protected]'};
o.__proto__ = User.prototype;
o.sendMail('Hello, MongoDB User!', 'You where loaded from MongoDB, but inherit from User nevertheless! Congratulations!');
Esto se usa en varios módulos y complementos, incluso los módulos principales hacen uso de esta técnica, aunque no es el estándar ECMAScript. Así que supongo que es seguro usarlo dentro de node.js.