JSFiddle - React, Tailwind, and code Playground
by rcuzcano
JavaScript
var userSettings = {
subscribers : [],
listeners : {},
username : username,
expired : expired,
get: function (field) {
for (var i = 0; i < this.listeners[field].length; i++) {
return this.listeners[field][i](this);
}
},
set: function (field, value) {
for (var i = 0; i < this.listeners[field].length; i++) {
this.listeners[field][i](this) = value;
}
},
Object.defineProperty(userSettings, "expired", {
get: function () {
return this.getExpired()
},
set: function (expired) {
this.setExpired(expired)
}
});
Object.defineProperty(userSettings, "widgetsSettings", {
get: function(){
return this.getWidgetsSettings()
},
set: function (widgetsSettings) {
this.setWidgetsSettings(widgetsSettings);
}
});
add = function (username) {
this.username = username;
this.dispatch("added");
};
on = function (eventName, listener) {
if (!this.listeners[eventName]) {
this.listeners[eventName] = [];
}
this.listeners[eventName].push(listener);
};
dispatch = function (eventName) {
if (this.listeners[eventName]) {
for (var i = 0; i < this.listeners[eventName].length; i++) {
this.listeners[eventName][i](this);
}
}
};
}
var settings = new userSettings('name1', false);
console.log(settings);
settings.username = 'name666';
settings.expired = true;
settings.widgetsSettings = [];
console.log(settings);
settings.on("added", function () {
console.log(settings.username);
});
settings.add('name1');