proxy 的认识

  Proxy 用于修改某些操作的默认行为,也可以了解成是在目标对象之前假设的一层拦截,或者是对原生 Object 方法的封装;通过 Proxy 的设置,外部所有的访问都必须先通过这一层拦截,因此可以通过这个对外部的访问进行过滤和修改。

  Proxy 支持的拦截的操作方法一共有 13 中:

    1)、get(target,propKey,receiver):拦截对象属性额读取,比如 proxy.foo 或者 proxy['foo'];

    2)、set(target,propKey,value,receiver):拦截对象属性的设置,比如 proxy.foo = 1,返回一个布尔值;

    3)、has(target,propKey):拦截 propKey in proxy 的操作,返回一个布尔值;

    4)、deleteProperty(target,propKey):拦截 delete proxy[propKey] 的操作,返回一个布尔值;

    5)、ownKeys(target):拦截 Object.getOwnPropertyName(proxy)、Object.getOwnPropertySymbols(proxy)、Object.keys(proxy)、for...in 循环,返回一个数组;该方法返回目标对象所有自身的属性的属性名,而 Object.keys() 的返回结果仅包括目标对象自身的可遍历属性;

    6)、getOwnPropertyDescriptor(target, propKey):拦截 Object.getOwnPropertyDescriptor(proxy, propKey),返回属性的描述对象;

    7)、defineProperty(target,propKey,propDesc):拦截 Object.defineProperty(proxy,propKey,propDesc)、Object.defineProperties(proxy,propDescs),返回一个布尔值;

    8)、preventExtensions(target):拦截 Object.preventExtensions(proxy),返回一个布尔值;

    9)、isExtensible(target):拦截 Object.isExtensible(proxy),返回一个布尔值;

    10)、setPrototypeOf(target,proto):拦截 Object.setPrototyOf(proxy,proto),返回一个布尔值;如果目标对象是函数,那么还有两种额外操作可以拦截;

    11)、getPrototypeOf(target):拦截 Object.getPrototypeOf(proxy),返回一个布尔值;

    12)、apply(target,object,args):拦截 Proxy 实例作为函数调用的操作,比如 proxy(...args)、proxy.call(object, ...args)、proxy.apply(...);

    13)、construct(target,args):拦截 proxy 实例作为构造函数调用的操作,比如 new Proxy(...args);

  

转载于:https://www.cnblogs.com/mufc/p/11345429.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值