• 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);

      

  • 相关阅读:
    Get distinct count of rows in the DataSet
    单引号双引号的html转义符
    PETS Public English Test System
    Code 39 basics (39条形码原理)
    Index was outside the bounds of the array ,LocalReport.Render
    Thread was being aborted Errors
    Reportviewer Error: ASP.NET session has expired
    ReportDataSource 值不在预期的范围内
    .NET/FCL 2.0在Serialization方面的增强
    Perl像C一样强大,像awk、sed等脚本描述语言一样方便。
  • 原文地址:https://www.cnblogs.com/mufc/p/11345429.html
Copyright © 2020-2023  润新知