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()).
32 lines (28 loc) • 818 B
JavaScript
const PRIVATE_PROPERTIES = new WeakMap();
export const privateStore = (obj) => {
if(PRIVATE_PROPERTIES.has(obj))
return PRIVATE_PROPERTIES.get(obj);
const data = {};
PRIVATE_PROPERTIES.set(obj, data);
return data;
};
export const privateProperty = function(obj, name, value) {
const data = privateStore(obj);
if(arguments.length === 1)
return data;
else if(arguments.length === 2)
return data[name];
else if(arguments.length === 3)
data[name] = value;
else
throw new Error("Not allowed size of arguments!");
};
export const privatePropertyAccessor = (varname) => {
return function(self, value){
if(arguments.length == 2)
privateProperty(self, varname, value);
else
return privateProperty(self, varname);
};
};
export default {privateProperty, privatePropertyAccessor, privateStore};