代理与反射
传说中的懿痕
这个作者很懒,什么都没留下…
展开
-
一些有用的代理模式
代理模式资料来源JavaScript高级程序设计使用代理可以在代码中实现一些有用的编程模式跟踪属性访问通过捕获get、set和has等操作,可以知道对象属性什么时候被访问、被查询。把实现相应捕获器的某个对象代理放到应用中,可以监控这个对象何时在何处被访问const user={ name:'yihen'}const proxy=new Proxy(user,{ get(target,property,receiver){ console.log(`获取属性${p原创 2021-10-07 21:20:38 · 74 阅读 · 0 评论 -
代理捕获器与反射方法
代理捕获器与反射方法资料来源JavaScript高级程序设计代理可以捕获13种不同的基本操作。这些基本操作有各自不同的反射API方法、参数、关联ECMAScript操作和不变式。文章目录代理捕获器与反射方法get()set()has()definePropertygetOwnPropertyDescriptor()deleteProperty()ownKeys()getPrototypeOf()setPrototypeOf()isExtensible()preventExtensions()apply原创 2021-10-06 16:52:22 · 142 阅读 · 0 评论 -
捕获不变式
捕获器不变式使用捕获器几乎可以改变所有基本方法的行为,但也不也是没有限制。根据ECMAScript规范,每个捕获的方法都知道目标对象的上下文、捕获器签名,而捕获器处理程序的行为必须遵循“捕获器不变式”。捕获器不变式因方法不同而不同,但通常都会防止捕获器顶定义出现过于反常的行为比如,如果目标对象有一个不可配置且不可写的数据属性,那么捕获器返回一个与该属性不同的值时,会抛出TypeErrorconst target={ get(){ return "hello" }}原创 2021-10-05 12:45:43 · 168 阅读 · 0 评论 -
代理与反射之捕获器
捕获器每个代理的主要目的是可以定义捕获器,捕获器就是在处理程序对象中定义的的基本操作的拦截器。每个处理程序对象可以包含0个或多个捕获器,每个捕获器都对应一种基本操作,可以直接或间接在代理对象上调用。每次在代理对象上调用这些基本操作时,代理可以在这些操作传播到目标对象之前先调用捕获器函数,从而拦截并修改相应的行为const test={ name:"yihen"}const tag={ // 捕获器在处理程序对象中以方法名为键 get(){ retur原创 2021-10-03 22:22:27 · 274 阅读 · 0 评论