当前位置: 首页 > article >正文

ES6基础----proxy的使用

目录

  Proxy 是代理的意思,主要用于拦截用户对对象的数据操作,是一个构造函数直接 new

    1、 Proxy 第一个参数是拦截的对象,第二个参数是拦截之后要做的操作

2、拦截对象的读取操作

3、拦截写入的操作    拦截的一个 key 不能写入修改

4、拦截删除的操作    拦截的一个 key 不能删除


  Proxy 是代理的意思,主要用于拦截用户对对象的数据操作,是一个构造函数直接 new

  let obj={

        name:"张三",

        age:20

    }  

    1、 Proxy 第一个参数是拦截的对象,第二个参数是拦截之后要做的操作


//                 拦截 , 操作(是一个对象)  

    let pro=new Proxy(obj, {

2、拦截对象的读取操作

//第一个参数是拦截的对象,第二个参数是拦截的 key 值        

//形参      拦截对象 key值

        get(obj,key){//---读取

            if(key=="age"){

                return obj.age>18?"成年":"未成年"   // :否则    ?返回      ---如果大于18返回成年,否则返回未成年

            }else{

                return obj[key]; //      返回 key 的值   因为是数组所以用 []  , 直接用 key 表示的是属性 name

            }

        },    //操作用 , 隔开


3、拦截写入的操作    拦截的一个 key 不能写入修改

set(obj,key,value){  //--设置其中一个 key 不能被删除  

            if(key=="name"){

                console.error("name不能修改")   //打印不能修改的错误

            }else{

                return obj[key]=value   //将值修改

            }

        },


4、拦截删除的操作    拦截的一个 key 不能删除

  deleteProperty(obj,key,value){

            if(key=="name"){

                console.error("name不能删除")   //打印不能删除的错误

            }else{

                return delete obj[key];   //返回被删的值

            }

        },

    });


    console.log(pro.name);//张三  用 pro,数组调用属性,在数组中

    console.log(pro.age);//成年


    pro.name="李四"//设置   ----设置之后并没有修改成功   name不能修改

    pro.age=15;//设置           ---设置成功

    console.log(pro.name);//张三  ----设置之后并没有修改原数组的属性值成功

    console.log(pro.age);//未成年



    console.log(delete pro.name);//删除 name   返回 flase

    console.log(delete pro.age);//删除 age    返回 true

    console.log(pro.name);//

    console.log(pro.age);//未成年


http://www.kler.cn/a/290119.html

相关文章:

  • 记录一次电脑被入侵用来挖矿的过程(Trojan、Miner、Hack、turminoob)
  • django基于Python的电影推荐系统
  • 计算机网络之---子网划分与IP地址
  • 10、Django Admin修改标题
  • Redis面经
  • MySql开机自启动
  • Excel vloopup应用案例
  • 业务解耦-Spring事件监听的三种实现方式
  • SPP/SPPF/Focal Module
  • 无人机 PX4 飞控 | ROS应用层开发:offboard 模式切换详细总结
  • Linux系统的字体管理
  • 12、Django Admin在列表视图页面上显示计算字段
  • Codeforces Round 968 (Div. 2)
  • 代码随想录算法训练营第36天|1049. 最后一块石头的重量、494. 目标和、474.一和零
  • 注册中心 Eureka Nacos
  • 重塑视频监控体验:WebRTC技术如何赋能智慧工厂视频高效管理场景
  • 负载均衡--资源申请说明(三)
  • Android随记
  • 坑——fastjson将字符串转到带枚举的java对象
  • ElasticSearch-数据建模
  • Go语言 Go程基础
  • rust feature 简介
  • shell 学习笔记:向脚本传递参数