<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        vue源碼學(xué)習(xí)之Object.defineProperty對象屬性監(jiān)聽

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:13:45
        文檔

        vue源碼學(xué)習(xí)之Object.defineProperty對象屬性監(jiān)聽

        vue源碼學(xué)習(xí)之Object.defineProperty對象屬性監(jiān)聽:本文介紹了vue源碼學(xué)習(xí)之Object.defineProperty對象屬性監(jiān)聽,分享給大家,具體如下: 參考版本 vue源碼版本:0.11 相關(guān) vue實現(xiàn)雙向數(shù)據(jù)綁定的關(guān)鍵是 Object.defineProperty ,讓我們先來看下這個函數(shù)。 在MDN上查看有關(guān)Object.defineP
        推薦度:
        導(dǎo)讀vue源碼學(xué)習(xí)之Object.defineProperty對象屬性監(jiān)聽:本文介紹了vue源碼學(xué)習(xí)之Object.defineProperty對象屬性監(jiān)聽,分享給大家,具體如下: 參考版本 vue源碼版本:0.11 相關(guān) vue實現(xiàn)雙向數(shù)據(jù)綁定的關(guān)鍵是 Object.defineProperty ,讓我們先來看下這個函數(shù)。 在MDN上查看有關(guān)Object.defineP

        本文介紹了vue源碼學(xué)習(xí)之Object.defineProperty對象屬性監(jiān)聽,分享給大家,具體如下:

        參考版本 vue源碼版本:0.11

        相關(guān)

        vue實現(xiàn)雙向數(shù)據(jù)綁定的關(guān)鍵是 Object.defineProperty ,讓我們先來看下這個函數(shù)。

        在MDN上查看有關(guān)Object.defineProperty 的解釋。

        我們先從最簡單的開始:

        let a = {'b': 1};
        Object.defineProperty(a, 'b', {
         enumerable: false,
         configurable: false,
         get: function(){
         console.log('b' + '被訪問');
         },
         set: function(newVal){
         console.log('b' + '被修改,新' + 'b' + '=' + newVal);
         }
        });
        
        a.b = 2; // b被修改,新b=2
        a.b; // b被訪問
        
        

        這樣,我們就能監(jiān)聽對象了!但問題并不僅僅這么簡單。。

        我們可能會有對象中屬性的值還是對象這種嵌套情況,可以通過遞歸解決!

        在vue源代碼文件 srcobserveobserver.js 中

        // 觀察者構(gòu)造函數(shù)
        function Observer(data){
         this.data = data;
         this.walk(data);
        }
        
        let p = Observer.prototype;
        p.walk = function(obj){
         let val;
         for(let key in obj){
         // 通過 hasOwnProperty 過濾掉一個對象本身擁有的屬性 
         if(obj.hasOwnProperty(key)){
         val = obj[key];
         // 遞歸調(diào)用 循環(huán)所有對象出來
         if(typeof val === 'object'){
         new Observer(val);
         }
         this.convert(key, val);
         }
         }
        };
        
        p.convert = function(key, val){
         Object.defineProperty(this.data, key, {
         enumerable: false,
         configurable: false,
         get: function(){
         console.log(key + '被訪問');
         },
         set: function(newVal){
         console.log(key + '被修改,新' + key + '=' + newVal);
         if(newVal === val) return ;
         val = newVal;
         }
         })
        };
        
        let data = {
         user: {
         name: 'zhangsan',
         age: 14
         },
         address: {
         city: 'beijing'
         }
        }
        
        let app = new Observer(data);
        data.user.name; // user被訪問 
        

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        vue源碼學(xué)習(xí)之Object.defineProperty對象屬性監(jiān)聽

        vue源碼學(xué)習(xí)之Object.defineProperty對象屬性監(jiān)聽:本文介紹了vue源碼學(xué)習(xí)之Object.defineProperty對象屬性監(jiān)聽,分享給大家,具體如下: 參考版本 vue源碼版本:0.11 相關(guān) vue實現(xiàn)雙向數(shù)據(jù)綁定的關(guān)鍵是 Object.defineProperty ,讓我們先來看下這個函數(shù)。 在MDN上查看有關(guān)Object.defineP
        推薦度:
        標(biāo)簽: 對象 監(jiān)聽 vue源碼
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产黄色片在线免费观看| 亚洲视频免费在线看| 亚洲av无码无线在线观看| 毛片在线看免费版| 亚洲第一页日韩专区| 亚洲AV日韩AV永久无码色欲 | 乱淫片免费影院观看| 日本视频免费高清一本18| 精品亚洲永久免费精品| 国产99视频精品免费专区| 亚洲综合精品一二三区在线| 99精品视频在线视频免费观看| 久久精品国产亚洲av日韩| 亚洲精品视频免费在线观看| 2020天堂在线亚洲精品专区| 精品无码国产污污污免费| 青娱乐在线免费观看视频| 久久精品国产精品亚洲下载| 亚洲一区二区三区在线观看网站| 女人与禽交视频免费看| 免费国产黄网站在线观看动图| 在人线av无码免费高潮喷水| 亚洲成在人线aⅴ免费毛片| 免费午夜爽爽爽WWW视频十八禁| 一级一级毛片免费播放| 亚洲AV人无码综合在线观看| 性短视频在线观看免费不卡流畅| 亚洲国产精品成人久久| 日本免费网站视频www区| 久久久青草青青亚洲国产免观| 四虎成人精品永久免费AV| 久久激情亚洲精品无码?V| 无码日韩精品一区二区免费暖暖| 亚洲男人的天堂久久精品| 亚洲精品成人片在线观看| 亚洲国产精品无码久久九九大片| 亚洲精品网站在线观看不卡无广告| 另类免费视频一区二区在线观看| 亚洲三级视频在线| 污污网站18禁在线永久免费观看| 亚洲色无码国产精品网站可下载|