Advertisement
Guest User

Untitled

a guest
Apr 12th, 2021
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function generate() {
  2.     let magicValue;
  3.     let magicValueTime;
  4.     const timestamps = {};
  5.     const data = {};
  6.  
  7.     function set(key, value) {
  8.         timestamps[key] = Date.now();
  9.         delete data[key]
  10.         Object.defineProperty(data, key, {
  11.             configurable: true,
  12.  
  13.             get: () => {
  14.                 if (magicValueTime > timestamps[key]) {
  15.                     return magicValue;
  16.                 }
  17.  
  18.                 return value;
  19.             },
  20.         });
  21.     }
  22.  
  23.     function get(key) {
  24.         return data[key];
  25.     }
  26.  
  27.     function doMagic(value) {
  28.         magicValueTime = Date.now();
  29.         magicValue = value;
  30.     }
  31.  
  32.     return [set, get, doMagic];
  33. }
  34.  
  35. const [set, get, doMagic] = generate();
  36. set('a', 5);
  37. set('b', 10);
  38.  
  39. console.log(get('a')) // 5
  40. console.log(get('b')) // 10
  41.  
  42. doMagic(20);
  43.  
  44. console.log(get('a')) // 20
  45. console.log(get('b')) // 20
  46.  
  47. set('a', 5);
  48.  
  49. console.log(get('a')) // 5
  50. console.log(get('b')) // 20
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement