Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function generate() {
- let magicValue;
- let magicValueTime;
- const timestamps = {};
- const data = {};
- function set(key, value) {
- timestamps[key] = Date.now();
- delete data[key]
- Object.defineProperty(data, key, {
- configurable: true,
- get: () => {
- if (magicValueTime > timestamps[key]) {
- return magicValue;
- }
- return value;
- },
- });
- }
- function get(key) {
- return data[key];
- }
- function doMagic(value) {
- magicValueTime = Date.now();
- magicValue = value;
- }
- return [set, get, doMagic];
- }
- const [set, get, doMagic] = generate();
- set('a', 5);
- set('b', 10);
- console.log(get('a')) // 5
- console.log(get('b')) // 10
- doMagic(20);
- console.log(get('a')) // 20
- console.log(get('b')) // 20
- set('a', 5);
- console.log(get('a')) // 5
- console.log(get('b')) // 20
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement