关于前端:学习VUE3总得知道Proxy怎么使用吧

30次阅读

共计 1091 个字符,预计需要花费 3 分钟才能阅读完成。

学习 VUE3 总得晓得 Proxy 怎么应用吧

咱们都晓得 vue2 是应用 object.defineProxy 实现数据监控的,但在 vue3 中改成了应用 JS 新增的 Proxy 对象。明天就来看一下 Proxy 是如何应用的

Proxy 对象用于创立一个对象的代理,进而实现基本操作的拦挡和定义。

它的根本语法是

const p = new Proxy(target, handler)

target 是应用 Proxy 包裹的指标对象

handler 是一个通常以函数作为属性的对象,其中各属性定义了执行各种操作时的代理行为,它能够有一些配置

const obj = {
    name: '伯约同学',
    age: 18
}

const objProxy = new Proxy(obj, {
    // 获取值时的捕捉器
    get(target, key) {console.log(` 监听到对象的 ${key} 属性被拜访了 `, target)
        return target[key]
    },

    // 设置值时的捕捉器
    set(target, key, newValue) {console.log(` 监听到对象的 ${key} 属性被设置了 `, target)
        target[key] = newValue
    },
    // 监听 in 捕捉器
    has(target, key) {console.log(` 监听到对象的 in 操作符 `, target)
        return key in target
    },
     
    // 监听 delete 捕捉器
    deleteProperty(target, key) {console.log(` 监听到对象的 delete 操作符 `, target)
        delete target[key]
    },
     
    // 获取对象原型捕捉器
    getPrototypeOf(target) {xxx},
     
    // 设置对象原型捕捉器
    setPrototypeOf(target, prototype) {xxx},
     
    // 是否能够扩大捕捉器
    isExtensible() { xxx},
     
    // 阻止扩大捕捉器
    preventExtensions() { xxx},
     
    // 获取本人的属性描述符捕捉器
    getOwnPropertyDescriptor() { xxx},
     
    // 定义属性捕捉器
    defineProperty() { xxx},
     
    // 监听属性名和 symbol 捕捉器
    ownKeys() { xxx},
     
    // 函数调用操作的捕捉器,用于函数对象
    apply() { xxx},
     
    // new 操作符捕捉器,用于函数对象
    construct() { xxx}

})

在 vue3 中用到的就是 get 和 set 办法。应用 proxy 代理相当于在对象外围做了一层拦挡,不必像 vue2 时针对每个属性再专门做一下遍历去监听属性。对于数组对象的属性变动也好起来了,不用再专门写办法去解决。

正文完
 0