Niedawno zdałem sobie sprawę, że faktycznie można zmienić prototyp obiektów w V8/node. Chociaż nie jest to standardem, jest to możliwe w różnych przeglądarkach, a zwłaszcza w V8/node!
Funkcjafunction 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!');
Jest to używane w różnych modułach i wtyczkach — nawet moduły podstawowe wykorzystują tę technikę, chociaż nie jest to standard ECMAScript. Więc myślę, że jest bezpieczny w użyciu w node.js.