//初始化数据对象 var options = { bdykey: 'open', bg_img: null, }; //通过chrome原生api访问本地存储数据 chrome.storage.sync.get(null, function (data) { //若初次加载属性则赋默认值 $.extend(options, data); //原生chrome api 设置本地存储值 chrome.storage.sync.set(options); //调用方法,并传入options对象和回调函数 observer.walk(options, function () { chrome.storage.sync.set(options) }); }); //利用Object.defineProperty实现对象双向绑定 var observer = { walk(data, callback) { if (typeof callback != 'function') { callback = function () { }; } Object.keys(data).forEach((key) => { this.defineRective(data, key, data[key], callback) }) }, defineRective(vm, key, value, callback) { Object.defineProperty(vm, key, { get: function () { return value; }, set: function (newVal) { if (value != newVal) { value = newVal; callback(); } } }) } };
利用Object.defineProperty 简化 Chrome插件本地存储操作
猜你喜欢
转载自www.cnblogs.com/GoCircle/p/10611099.html
今日推荐
周排行