美文网首页
ES6中的Proxy对象代理

ES6中的Proxy对象代理

作者: 月下小酌_dbd5 | 来源:发表于2021-12-09 19:32 被阅读0次

♣ 通过代理对象可以获取和操作原对象的属性

let obj = { name: 'tom', age: 18 }
    let proxyObj = new Proxy(obj, {})
    //通过proxy来操作obj
    proxyObj.name = 'abb'
    console.log(proxyObj.age); //18
    console.log(obj.name); // abb

♣ Proxy捕获器

♣ 捕获器很多具体看文档: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy
♣ 下面列举---Proxy捕获器
   let obj = { name: 'tom', age: 18 }
    let proxyObj = new Proxy(obj, {
      // 获取值的捕获器
      //target=obj  
      get: function (target, key) {
        console.log(`获取obj对象的${key}值---${obj[key]}`);
        return target[key]
      },
      // 设置值的捕获器
      set: function (target, key, newValue) {
        console.log(`设置obj对象的${key}值为---${newValue}`);
        return target[key] = newValue
      },
      has: function (target, key) {
         console.log(`监听到对象的${key}属性in操作`, target);
        key in target
      },
      deleteProperty: function (target, key) {
        delete target[key]
        console.log('del');
      }
    })
    //通过proxy来操作obj
    proxyObj.name = 'abb'
    proxyObj.name
    let hasShow = 'name' in proxyObj
    console.log(hasShow);
♣ 结果
image.png
♣ 特殊--用于函数对象(function foo())
 function foo () {}

    const fooProxy = new Proxy(foo, {
      apply: function (target, thisArg, argArray) {
        console.log("对foo函数进行了apply调用");
        return target.apply(thisArg, argArray)
      },
      construct: function (target, argArray, newTarget) {
        console.log("对foo函数进行了new调用");
        return new target(...argArray)
      }
    })

    fooProxy.apply({}, [1, 'ab', 2])
    new fooProxy('bd', 3, 4, 5)
♣ 结果
image.png

相关文章

  • 前端小白成长05--Proxy

    JavaScript中的Proxy 翻译过来就是代理的意思,Proxy是ES6中提供的新的API,可以用来定义对象...

  • es6 proxy

    # ES6之proxy ## 是什么 Proxy是一个构造器。通过new Proxy(原对象,{代理列表})的方式...

  • Proxy代理对象

    Proxy 对象为ES6的新代理对象,及其类似于ES5中的Object.defineProperty的对象劫持,但...

  • Proxy代理

    代理 ES5 代理方式 ES6 Proxy ES6 Reflect 常用拦截方法 get拦截对象属性的读取,比如p...

  • ES6中的Proxy对象代理

    ♣ 通过代理对象可以获取和操作原对象的属性 ♣ Proxy捕获器 ♣ 捕获器很多具体看文档: https://d...

  • 代理相关学习

    代理(Proxy)是ES6中新增的用法,它可以拦截一个对象属性或方法的调用及赋值。创建代理的方式如下: 其中tar...

  • ES6 之 Proxy 介绍

    Proxy(代理) 是 ES6 中新增的一个特性。Proxy 让我们能够以简洁易懂的方式控制外部对对象的访问。其功...

  • 阮一峰es6要点总结——Proxy

    笔记,完全摘录自阮一峰 proxy的概念 proxy英文原意是代理的意思,在ES6中,可以翻译为"代理器"。它主要...

  • 你了解vue3.0响应式数据怎么实现吗?

    从 Proxy 说起 什么是Proxy proxy翻译过来的意思就是”代理“,ES6对Proxy的定位就是targ...

  • 面试常问的设计模式之代理模式的详细解析

    Proxy-代理模式 代理模式 代理模式: Proxy Pattern. 指为对象提供一种代理,用以控制对这个对象...

网友评论

      本文标题:ES6中的Proxy对象代理

      本文链接:https://www.haomeiwen.com/subject/bwmffrtx.html