代理与反射
传说中的懿痕
这个作者很懒,什么都没留下…
展开
-
一些有用的代理模式
代理模式 资料来源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 · 146 阅读 · 0 评论 -
捕获不变式
捕获器不变式 使用捕获器几乎可以改变所有基本方法的行为,但也不也是没有限制。 根据ECMAScript规范,每个捕获的方法都知道目标对象的上下文、捕获器签名,而捕获器处理程序的行为必须遵循“捕获器不变式”。 捕获器不变式因方法不同而不同,但通常都会防止捕获器顶定义出现过于反常的行为 比如,如果目标对象有一个不可配置且不可写的数据属性,那么捕获器返回一个与该属性不同的值时,会抛出TypeError const target={ get(){ return "hello" } }原创 2021-10-05 12:45:43 · 170 阅读 · 0 评论 -
代理与反射之捕获器
捕获器 每个代理的主要目的是可以定义捕获器, 捕获器就是在处理程序对象中定义的的基本操作的拦截器。 每个处理程序对象可以包含0个或多个捕获器,每个捕获器都对应一种基本操作,可以直接或间接在代理对象上调用。 每次在代理对象上调用这些基本操作时,代理可以在这些操作传播到目标对象之前先调用捕获器函数,从而拦截并修改相应的行为 const test={ name:"yihen" } const tag={ // 捕获器在处理程序对象中以方法名为键 get(){ retur原创 2021-10-03 22:22:27 · 276 阅读 · 0 评论