Vue原理-筆記

Object.defineproperty - (Vue的原理)

例1:

const obj = {}
        Object.defineProperty(obj, 'x', {
            value:21,
            writable:false //不能被改變
        })

結(jié)果:

> obj
< {x: 21}
> obj.x =24
< 24
> obj
> {x: 21}

例2:

//事先定義一個(gè)對(duì)象
const obj = {}
//定義一個(gè)中間值,用于過渡
        let y = 20
        //使用Object.defineProperty來(lái)為obj定義一個(gè)x的值
        Object.defineProperty(obj, 'x', {
            //當(dāng)每次調(diào)用 obj.x 這個(gè)get方法會(huì)自動(dòng)執(zhí)行,它的return值就是上面定義的y
            get () {    //獲取時(shí)走的方式
                return y
            },
            //當(dāng)每次使用obj.x = 某個(gè)值 來(lái)賦值的時(shí)候 這個(gè)set方法會(huì)自動(dòng)執(zhí)行,set方法的參數(shù)就是你的那個(gè)'某個(gè)值'
            set (newValue) { //賦值時(shí)走的地方
                console.log(newValue);
                //把新值賦給y,那么下次在執(zhí)行obj.x取出來(lái)的值就是新值
                y = newValue;
            }
        })

結(jié)果

> obj.x
< 20
> obj.x = 24
  24
< 24

特性檢測(cè):

> 'borderRadius' in document.createElement('div').style;
< true
> 'placeholder' in document.createElement('input');
< true

Proxy

//設(shè)置初始值方便理解
let x = 10;
    //使用Proxy來(lái)定義一個(gè)對(duì)象,對(duì)象可為空
    const obj = new Proxy({ x },{
        //當(dāng)每次使用obj.x = 某個(gè)值 來(lái)賦值的時(shí)候 這個(gè)set方法會(huì)自動(dòng)執(zhí)行,set方法的參數(shù)就是 "{ x }, x, 某個(gè)值"
        set (obj, prop, value) { //obj就是 { x }
            obj[prop] = value; 
        },
        //當(dāng)每次使用obj.x時(shí)這個(gè)get方法會(huì)自動(dòng)執(zhí)行,get方法的參數(shù)就是 "{ x }, x"
        get (obj, prop) {
            return obj[prop]  //返回obj[prop]的value值
        }
    })
?著作權(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)容

  • 來(lái)自深入理解ES6第十二章,由于最近業(yè)務(wù)中經(jīng)常用到,記錄一下 這里內(nèi)容都太學(xué)術(shù)了,有一篇簡(jiǎn)單介紹Proxy作用的文...
    NowhereToRun閱讀 1,098評(píng)論 0 1
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,180評(píng)論 0 29
  • 面試官: 實(shí)現(xiàn)雙向綁定Proxy比defineproperty優(yōu)劣如何? 面試官系列(4): 實(shí)現(xiàn)雙向綁定Prox...
    流動(dòng)碼文閱讀 23,264評(píng)論 6 77
  • VUE介紹 Vue的特點(diǎn)構(gòu)建用戶界面,只關(guān)注View層簡(jiǎn)單易學(xué),簡(jiǎn)潔、輕量、快速漸進(jìn)式框架 框架VS庫(kù)庫(kù),是一封裝...
    多多醬_DuoDuo_閱讀 2,859評(píng)論 1 17
  • ## 框架和庫(kù)的區(qū)別?> 框架(framework):一套完整的軟件設(shè)計(jì)架構(gòu)和**解決方案**。> > 庫(kù)(lib...
    Rui_bdad閱讀 3,155評(píng)論 1 4

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