JSFiddle - React, Tailwind, and code Playground
JavaScript
var fields = ["id", "nam", "last_login"];
var User = (function () {
function User (id, nam) {
Object.defineProperty (this, '__', // Define property for field values
{ value: {} });
this.id = id;
this.nam = nam;
};
(function define_fields (fields){
fields.forEach (function (field_name) {
var values = {};
Object.defineProperty (User.prototype, field_name, {
get: function () { return this.__ [field_name]; },
set: function (new_value) {
// some business logic goes here
this.__[field_name] = new_value;
}
})
})
}) (fields);
return User;
}) ();
var user1 = new User(1, "Thomas");
var user2 = new User(2, "John");
document.write ('user2: ' + user2.id + ' ' + user2.nam + '<br/>'); // 2, John
document.write ('user1: ' + user1.id + ' ' + user1.nam + '<br/>'); // 2, John
document.write ('user1.__: ' + JSON.stringify (user1.__) + '<br/>');
user1.__ = 123;
document.write ('user1.__: ' + JSON.stringify (user1.__) + ' Not changed !! <br/>');