Using Proxy and Reflect to memoize propertie

by Gerald Gillespie

JavaScript

console.clear();
const MEMO = new Proxy({}, {
    'get': (_, name) => {
      if(!Reflect.has(_,name))
        Reflect.set(_,name,undefined);
      return Reflect.get(_, name);
    }
    ,
    'set': (_, name, value) => {
      if (Reflect.has(_, name))
        throw new TypeError(`Memoized property is already set to ${Reflect.get(_,name)}`);
      else
        Reflect.set(_, name, value);
    }
  });


MEMO.test = 'hi';

//set any parameter on the fly;
MEMO.any = 'whatever i want';

try{
  MEMO.test='bye';
}catch(e){
  console.log(e.message);
}

//get any parameter on the fly;
console.log('what is now undefined -- literally',MEMO.what);

console.log(MEMO);