1. 程式人生 > >利用Object.defineProperty 簡化 Chrome插件本地存儲操作

利用Object.defineProperty 簡化 Chrome插件本地存儲操作

默認值 取值 lba 數據對象 return clas wal 內部 -c

通常谷歌插件本地存儲寫法很別扭?,如

chrome.storage.sync.get(null,function(data){   //todo   console.log(data); });

如果get後需要判斷內部值時,則需要套住todo代碼,使得代碼臃腫

本地存儲的set方法還算方便,如

chrome.storage.sync.set(data)

但是每次取值時都要寫一大段get語句?,操作起來很是不便

SO,我要簡化它??,通過簡單的學習得到下面那段方法

先!!!,看一下調用方法??

options.yuedu = ‘close‘;//這裏實際上已為chrome本地數據更新

以下方法僅操作options即可

//初始化數據對象
var options = {
    yuedu: ‘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);
});
//利用Object.defineProperty實現對象雙向綁定 var observer = { walk(data) { Object.keys(data).forEach((key) => { this.defineRective(data, key, data[key], callback) }) }, defineRective(vm, key, value) { Object.defineProperty(vm, key, { get: function
() { return value; }, set: function (newVal) { if (value != newVal) { value = newVal; chrome.storage.sync.set(options); } } }) } };

利用Object.defineProperty 簡化 Chrome插件本地存儲操作