Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。

    简单来说,对于使用了 Proxy 进行代理的对象。当外部访问对象时,都会经过一个你自定义的流程,在这个拦截的流程中你可以控制过程和结果。

    使用方法:

    1. let p = new Proxy(target, handler);

    参数:

    target: 用 Proxy 包装的目标对象(可以是任何类型的对象,包括数组、函数,甚至是一个代理)。

    handler: 一个对象,其属性是当执行一个操作时定义代理行为的函数。

    1. function updateView () {
    2. console.log('更新视图')
    3. }
    4. let data = {
    5. name: 'zhoujiawei'
    6. }
    7. let p = new Proxy(data, {
    8. get (target, key) {
    9. return target[key]
    10. },
    11. set (target, key, newValue) {
    12. if (newValue !== target[key]) {
    13. updateView()
    14. target[key] = newValue
    15. }
    16. }
    17. })
    18. p.name = 'allen'
    19. console.log(p.name) // allen

    image.png