2018-01-31 數(shù)據(jù)劫持

數(shù)據(jù)劫持 關(guān)鍵點(diǎn)運(yùn)用Object.defineProperty()函數(shù)

function observer(data){
  if(!data || typeof data !== 'object'){
    return;
  }
  // Object.keys遍歷對(duì)象的屬性,不包含原型鏈上的屬性
  Object.keys(data).forEach(key => {
    observerProperty(data, key, data[key]);
  })
}

function observerProperty(data, key, val){
  // 遞歸
  observer(val);
  Object.defineProperty(data, key, {
    enumerable: true,  // 可以枚舉
    configrable: true,   // 可重新定義
    get: function(){
      return val;
    },
    set: function(newVal){
      if(val === newVal){
        return;
      }
      console.log("數(shù)據(jù)更新啦", val, "=>", newVal);
      val = newVal;
    }
  })
}

var person = {name: "Lucy"};
observer(person);
person.name="Mary";
//輸出:數(shù)據(jù)更新啦 lucy => Mary
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,585評(píng)論 0 13
  • 文/文郎畫竹 我們經(jīng)常遇到客戶小伙伴有這樣的疑問(wèn),看了看重大疾病保險(xiǎn)條款的疾病種類后,感覺都是快要掛了才理賠,那么...
    文郎畫竹閱讀 1,128評(píng)論 5 6
  • 許多人知道了自己處在火宅之后,便惟愿修行。 當(dāng)世許多高僧大德們,居士善知識(shí)們的大力推動(dòng)下,人間佛教,網(wǎng)絡(luò)化佛教,現(xiàn)...
    業(yè)明零閱讀 5,090評(píng)論 0 3
  • 或許,每一份思念都像拋在海里的漂流瓶; 或許,每一份期盼都像想要貯藏的流星; 或許,每一份執(zhí)著都像觸摸不到的空氣;...
    Mr_R_glory閱讀 184評(píng)論 0 0
  • “起初,我還因?yàn)檫@個(gè)故事的道理太過(guò)淺顯而感到惱火,以為我感覺它聽起來(lái)似乎是我們?cè)谛W(xué)就學(xué)到的?!薄昂髞?lái)我才意識(shí)到自...
    海滴故事閱讀 200評(píng)論 0 0

友情鏈接更多精彩內(nèi)容