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中某個數據被修改後,能夠實時地監測到而且被從新渲染了函數