ES6 Proxy

Proxy 支持的13种拦截操作

get(target, propKey, receiver):拦截对象属性的读取,比如proxy.foo和proxy['foo']。
set(target, propKey, value, receiver):拦截对象属性的设置,比如proxy.foo = v或proxy['foo'] = v,返回一个布尔值。
has(target, propKey):拦截propKey in proxy的操作,返回一个布尔值。
deleteProperty(target, propKey):拦截delete proxy[propKey]的操作,返回一个布尔值。
ownKeys(target):拦截Object.getOwnPropertyNames(proxy)、
Object.getOwnPropertySymbols(proxy)、Object.keys(proxy),返回一个数组。该方法返回目标对象所有自身的属性的属性名,而Object.keys()的返回结果仅包括目标对象自身的可遍历属性。
getOwnPropertyDescriptor(target, propKey):拦截Object.getOwnPropertyDescriptor(proxy, propKey),返回属性的描述对象。
defineProperty(target, propKey, propDesc):拦截Object.defineProperty(proxy, propKey, propDesc)、Object.defineProperties(proxy, propDescs),返回一个布尔值。
preventExtensions(target):拦截Object.preventExtensions(proxy),返回一个布尔值。
getPrototypeOf(target):拦截Object.getPrototypeOf(proxy),返回一个对象。
isExtensible(target):拦截Object.isExtensible(proxy),返回一个布尔值。
setPrototypeOf(target, proto):拦截Object.setPrototypeOf(proxy, proto),返回一个布尔值。如果目标对象是函数,那么还有两种额外操作可以拦截。
apply(target, object, args):拦截 Proxy 实例作为函数调用的操作,比如proxy(...args)、proxy.call(object, ...args)、proxy.apply(...)。
construct(target, args):拦截 Proxy 实例作为构造函数调用的操作,比如new proxy(...args)。
参数解释:target   propKey  receiver  value
例:
    let proxy = new Proxy({},{
        set:(target,propKey,value,receiver)=>{
            console.log(target,propKey,value,receiver);
            return 'setmessage ';
        }
    })
    proxy.age = '28';
    proxy.name = 'pyh';

    let obj = Object.create(proxy);
    obj.sex = 'man';

    let penson = Object.create(obj);
    penson.nothing = 'message';
    penson.hh = 'hh';

调用:penson.name

target: 目标对象 自定义的最直接属性   proxy对象的age name 属性
propKey:当前调用的属性   name
receiver:接收对象  自定义的最直接属性  penson对象的nothing hh 属性
value: 当前调用属性的值

http://es6.ruanyifeng.com/#docs/proxy

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ES:给开发者提供了一个新特性:Proxy,就是代理的意思。也就是我们这一节要介绍的知识点。以前,ATM还没有那么...
    幸宇阅读 501评论 0 0
  • Proxy:代理 类比到实际生活中有供应商,代理商,客户,这里的Proxy就是代理商 ;在程序中就是连着用户和最真...
    super静_jingjing阅读 427评论 1 1
  • 最近看到ES6的Proxy,想到可以用他实现一下数据绑定 我们可以构造这样一个模板 是不是感觉跟Vue很像,没错,...
    Vonlion阅读 1,229评论 0 1
  • 今天上午接孩子,孩子可高兴了,因为马上考试了,如果考好了他能吃到汉堡包了。爸爸记住我们的约定啊!放心只要考试优秀爸...
    韩秉辰阅读 155评论 0 0
  • 我感觉我的眼睛快要爆了!!! 这些日子很累很累,希望有一天能过上闲适的生活。整个人感觉被笼罩在疲惫之中。加油吧,...
    KAUNG阅读 239评论 0 0

友情链接更多精彩内容