solutaaliquid
Version:
common utils for javascript. Utils to get the global scope (browser, webworker & co.). Customizable string escaper. Utilitize for objects. Extension at base javascript api (usefull extention like String.hashcode()).
57 lines (47 loc) • 958 B
JavaScript
export default class ObjectProperty {
constructor(key, context){
this.key = key;
this.context = context;
}
get keyDefined(){
return this.key in this.context;
}
get hasValue(){
return !!this.context[this.key];
}
get value(){
return this.context[this.key];
}
set value(data){
this.context[this.key] = data;
}
set append(data) {
if(!this.hasValue)
this.value = data;
else {
const value = this.value;
if(value instanceof Array)
value.push(data);
else
this.value = [this.value, data];
}
}
remove(){
delete this.context[this.key];
}
static load(data, key, create=true) {
let context = data;
const keys = key.split("\.");
let name = keys.shift().trim();
while(keys.length > 0){
if(!context[name]){
if(!create)
return null;
context[name] = {}
}
context = context[name];
name = keys.shift().trim();
}
return new ObjectProperty(name, context);
}
};