es7----proxy

Proxy  對象用於定義基本操做的自定義行爲(如屬性查找,賦值,枚舉,函數調用等),等同於在語言層面作出修改,因此屬於一種「元編程」(meta programming),即對編程語言進行編程。vue

基本語法:new Proxy(obj, handler)編程

它的handler有13種操做:具體看 官方文檔json

proxy是代理的意思,es7新增這個能夠代理某個變量的「增刪改查」,vue3 的核心原理就是這個~~編程語言

基本使用方法:ide

let json = {a: 123, c: 999}
let p = new Proxy(json, {
    get(target, name, proxy){
        return target[name]
    },
    set(targe, name, value, proxy) {
        targe[name] = value
    },
    deleteProperty(targe, name) {
        delete targe[name]
    },
    has(target, name) {
        console.log(target, name)
    }
})
//觸發get
console.log(p.a)
//觸發set
p.b = 456
console.log(json)
//觸發deleteProperty
delete p.c
console.log(json)
//觸發has
"b" in p

意思就是p代理了json對象的任何操做,就是說在對經過p對j'son進行「增刪改查」的時候都是能夠監聽到的(分別觸發get、set、deleteProperty、has方法),這個就是爲何vue.data中某個數據被修改後,能夠實時地監測到而且被從新渲染了函數

本站公眾號
   歡迎關注本站公眾號,獲取更多信息