ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ES6中的Proxy概述(Note)

2020-09-03 12:33:34  阅读:220  来源: 互联网

标签:ES6 target 布尔值 Object propKey Note Proxy 拦截 proxy


Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。


下面是 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)、for...in循环,返回一个数组。该方法返回目标对象所有自身的属性的属性名,而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)。

标签:ES6,target,布尔值,Object,propKey,Note,Proxy,拦截,proxy
来源: https://www.cnblogs.com/CodeMuscle/p/13606873.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有