Mock session storage

by amindunited

JavaScript

const Model = (function () {

	const s = {}

	Object.defineProperty(s, 'setItem', {
  	get: () => {
    	return (key, value) => {
      	s[key] = value;
        console.log('just set ', key, value, 'in', this);
      }
    }
  });

	Object.defineProperty(s, 'getItem', {
  	get: () => {
    	return (key) => {
      	return s[key];
      }
    }
  });

  Object.defineProperty(s, 'length', {
    get: () => {
      return Object.keys(s).length;
    }
  });
  
  return s;
});

let m = new Model();
m.setItem('bee', 'gee');
m.setItem('gretta', 'vanfeet');
console.log('m', m);
console.log('m.setItem', m.setItem);
m.setItem('bee', 'gee');
console.log('m.getItem', m.getItem('bee'));
console.log('..............', Object.keys(m));