被proxy 拦截为proxy 对象_Proxy 对象拦截器

Proxy 对象拦截器“ ES6的对象拦截器,可以拦截哪些情况呢”01 前言自从ES6诞生以来,各种新特性也逐渐显现出来,比如ES6中的Proxy对象,是一个重要的技术。之前Vue的数据双向数据绑定是使用Object.defineProperty()来做的,而现在vue3.0使用的是代理Proxy来编写。原因是前者有一些对象或者数组的变化是监听不了的,但是Proxy可以监听整个对象。Proxy可以...
摘要由CSDN通过智能技术生成

Proxy 对象拦截器

ES6的对象拦截器,可以拦截哪些情况呢

d0329d56dc495b491c7def4861e58d68.gif

01 前言

自从ES6诞生以来,各种新特性也逐渐显现出来,比如ES6中的Proxy对象,是一个重要的技术。之前Vue的数据双向数据绑定是使用Object.defineProperty()来做的,而现在vue3.0使用的是代理Proxy来编写。原因是前者有一些对象或者数组的变化是监听不了的,但是Proxy可以监听整个对象。

Proxy可以理解为,当你试图访问一个对象的时候必须先经过一个拦截或者代理,你才可以进行对对象的操作。这种机制的好处就是可以对外界的访问进行过滤和改写。

02 Proxy实例的方法

proxy实例的构造

ES6提供一个原生的Proxy构造函数,用于生成Proxy实例。

var proxy = new Proxy ( target, handler ) ;

参数解析:

  • target:所要拦截(代理)的对象
  • 处理函数,拦截对应的操作

利用Proxy对象可以拦截的方法有一下13种,下面一一来介绍一下。

1、get()

get方法是意思是读取对象,那么相应的拦截就是在读取对象的时候进行拦截。

var person = {
    
    name:'alanwu'
}
var proxy = new Proxy(person, {
    
    get:function(target, property){
    
        if(property in target){
    
            return target[property]
        }else{
    
            throw new Error('对象属性不存在')
        }
    }
})
proxy.name  //'alanwu'
proxy.age   //错误

假如上述代码访问不存在的属性的时候,没有抛出错误的话就会返回undefined。

2、set()

set拦截操作用于拦截对对象赋值的操作。

const obj = {
    
    a: 101,
    b: 46,
    c: 200
}
var proxy = new Proxy(obj, {
    
    set(target, key, value) {
    
        if (value < 100) {
    
           throw Error(`${<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值