当前位置: 首页 > news >正文

重庆手机网站制作广州培训 网站开发

重庆手机网站制作,广州培训 网站开发,2021最新域名id地址,建设网络强国征文在JavaScript中#xff0c;Proxy是一种能够拦截对对象的读取、设置等操作的机制。它们提供了一种方式#xff0c;可以在执行基本操作之前或之后#xff0c;对这些操作进行自定义处理。这种功能在许多高级编程场景中非常有用#xff0c;比如实现数据验证、日志记录、权限控制…在JavaScript中Proxy是一种能够拦截对对象的读取、设置等操作的机制。它们提供了一种方式可以在执行基本操作之前或之后对这些操作进行自定义处理。这种功能在许多高级编程场景中非常有用比如实现数据验证、日志记录、权限控制等。 1、理解Proxy 在JavaScript中对象具有一些基本操作如属性查找、赋值、删除等。当你访问一个对象的属性时JavaScript会直接返回该属性的值。然而如果你使用Proxy来“代理”这个对象那么在执行这些基本操作时你就可以在JavaScript引擎执行基本操作之前或之后插入自定义的处理逻辑。 2、创建Proxy 要创建一个Proxy你需要使用Object.create()方法并传入一个具有get和set方法的对象作为参数。get方法会在读取属性时被调用set方法会在设置属性时被调用。 const target { a: 1, b: 2 }; const handler {get: function(target, prop, receiver) {console.log(Reading ${prop});return Reflect.get(...arguments);},set: function(target, prop, value, receiver) {console.log(Setting ${prop});return Reflect.set(...arguments);} };const proxy new Proxy(target, handler);在上面的代码中我们创建了一个名为target的对象并定义了一个handler对象来处理对target的访问。然后我们使用new Proxy()构造函数创建了一个新的对象proxy该对象会“代理”对target的访问。 同一个拦截器函数可以设置拦截多个操作。 var handler {get: function(target, name) {if (name prototype) {return Object.prototype;}return Hello, name;},apply: function(target, thisBinding, args) {return args[0];},construct: function(target, args) {return {value: args[1]};} };var fproxy new Proxy(function(x, y) {return x y; }, handler);fproxy(1, 2) // 1 new fproxy(1, 2) // {value: 2} fproxy.prototype Object.prototype // true fproxy.foo Hello, foo // true对于可以设置、但没有设置拦截的操作则直接落在目标对象上按照原先的方式产生结果。 下面是 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)。
http://www.hkea.cn/news/14395942/

相关文章:

  • 诚信网站 互联网建站深圳软件开发有限公司
  • 网站改版怎样做301重庆市特种作业证报名
  • 做网站服务器哪个好大学制作网站怎么做
  • vps网站目录显示灰色的wordpress skydrive
  • h5页面制作软件下载咸阳seo推广
  • 做网站第一步要干啥网站建设广告平台推广
  • 购书网站开发广东个人网站备案
  • 西安网站建设winkuowordpress模板学校
  • p2p网站开发费用怎么让客户做网站
  • 做的好的手机网站有哪些iis7 网站用户权限
  • 金昌八冶建设集团官方网站常熟建设合同备案在哪个网站
  • 上海做网站哪家好城市分站网站设计
  • 做网站版权怎么写免费搭建手机网站
  • 网页 网站及与之相关的概念国家网站建设
  • 广州市外贸网站建设企业专业做生鲜的网站
  • 南皮网站建设使用word做网站
  • 招聘网站上找在家做html5素材网站
  • 实验室网站建设重要性wordpress rtmp
  • 做网站文件下载wordpress教程w3c
  • 江西省公共资源交易网seo教程视频论坛
  • 怎样提高网站首页权重网站建设的基本目标
  • 做网站 视频外链网站网页直播怎么做
  • 高端网站建设策划网络推广 深圳
  • 网站目录安全设置海外全网推广
  • 营销型网站需要注意ai生成图片在线制作
  • 做网站是个什么行业分类目录网
  • 品牌建设网巢湖seo推广
  • ps可以做网站动态图自媒体平台企业网站怎么设置
  • 北票网站建设近期新闻热点大事件
  • cn域名知名网站快递物流公司网站模板