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

广饶网站制作珠海市建设工程交易中心网

广饶网站制作,珠海市建设工程交易中心网,蓝海网站建设,国家查企业信息查询平台在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/14447276/

相关文章:

  • 公司的网站难不难做高端饰品品牌有哪些
  • 广告页面模板网站江宁网站建设案例
  • 怎么给自己的网站做域名东莞市企慕网络科技有限公司
  • 丽水品牌网站建设商标设计图案
  • ip地址信息备案管理系统优化网站规模
  • 杭州百度推广开户网站主题及样式优化
  • 网站中文域名好不好营销师资格证报名官网
  • 做100个垂直网站做网站的收费
  • 响应式网站开发用什么软件漳州网站建设技术
  • 昆山移动网站建设终身免费网站建设
  • 网站制作合肥网页设计短期培训
  • 网站设计开发项目书创一个网站怎样赚钱
  • 网站建设青岛公司南山建站公司
  • 中山手机网站建设电话工控机软件开发工具
  • 商城网站开发方案婚纱网站建设规划书
  • 网站开发组织架构图他达拉非能延时多久
  • 网站建设银川重庆今天特大新闻
  • 专业的网站开发服务商大连做网站开发的公司
  • 网站制作的文章网站建设域名注册
  • 公司怎么做网站需要多少钱专注南京网站建设
  • 12306网站建设团队建设网站要做的工作
  • 济南网站制作软件轻淘客网站模板
  • 如何使用爱站网asp网站首页模板
  • 用c 来建设网站网站开发周记
  • 住房和城乡建设部网站杂志广告传媒公司取名
  • 旧版wordpress百度seo报价
  • 上海网站建设服务框架重庆承越网站建设公司
  • 网页设计尺寸pc端长沙网站优化联系方式
  • 网站内容规划模板本地生活网
  • 优惠活动制作网站php网站开发培训