JSFiddle - React, Tailwind, and code Playground
by amuzalevskyi
JavaScript
// util
function createFieldDeclaration(fields){
var decl = {};
for(var i = 0; i<fields.length; i++) {
(function(propName) {
decl[propName] = {
get: function () {
return this.props[propName];
},
set: function (value) {
this.props[propName] = value;
}
}
})(fields[i]);
}
return decl;
}
// class definition
function User(id, name){
this.props = {};
this.id = id;
this.name = name;
};
User.prototype = Object.create(Object, createFieldDeclaration(['id','name']));
// tests
var Alex = new User(0, 'Alex'),
Andrey = new User(1, 'Andrey');
document.write(Alex.name + '<br/>'); // Alex
document.write(Andrey.name + '<br/>'); // Andrey
Alex.name = "Alexander";
document.write(Alex.name + '<br/>'); // Alexander
document.write(Andrey.name + '<br/>'); //Andrey