Ik realiseerde me onlangs dat het mogelijk is om een prototype van een object in V8/node te veranderen. Hoewel dit niet standaard is, is het mogelijk in verschillende browsers en vooral in 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!');
Dit wordt overal in verschillende modules en plug-ins gebruikt - zelfs kernmodules maken gebruik van deze techniek, hoewel het geen ECMAScript-standaard is. Dus ik denk dat het veilig is om te gebruiken binnen node.js.