let storage = window.localStorage; export class LocalStorage { init(prefix) { this._prefix = prefix; this._watchers = []; window.addEventListener('storage', (e) => { let newValueJson = JSON.parse(e.newValue); this._watchers.forEach(function(watcher) { if (watcher.key === e.key && e.oldValue !== e.newValue) { watcher.callback(newValueJson); } }); }); } set(key, value) { storage.setItem(this._prefix + key, JSON.stringify(value)); } get(key) { let itemString = storage.getItem(this._prefix + key); if (itemString) { return JSON.parse(itemString); } else { return null; } } watch(key, callback) { this._watchers.push({ key: this._prefix + key, callback: callback }); } } export default new LocalStorage();