继续分享在 javascript 中是如何实现元编程,我们先介绍一下在编程中代理以及代理模式是什么,Proxy 从名字上看显而易见,就是对真实对象进行代理,为了是隐藏真实对象,且提供统一接口。大家记住这个就行,以后在设计模式中会为大家详细讲解,在元编程中代理的目的是—提供统一接口。
第一参数为代理的对象,通过 new 创建的 proxy 对象是代理什么对象或类型,可以代理以下类型的对象,提醒他们都是 object 类型。
代理创建对象与其代理对象类型保持一致。
这里处理函数,其实就是复写一些对象一些基本方法,代理也就是在原有对象上再套上一层,为其原有的方法添加新特性。
有关 handler(处理方法)这里通过代码给大家解释,我们通过 hanlder 复写对象的 get 方法,如果属性在对象中不存,我们在获取时就会返回 37 ,代码很简单也很明了,就不进行过多解释了。
这是代理可以复写的方法,在元编程中代理一般不单独使用,他会与下面介绍的 Reflect 对象一起共同完成对元编程的实现。所以他们俩的方法也是一一对应的
介绍 Reflect API
Reflect 不是构造函数, 要使用的时候直接通过Reflect.method()调用, Reflect有的方法和Proxy差不多, 而且多数Reflect方法原生的Object已经重新实现了。
*这里给大家提一下 revoke 方法,如果执行这个 revoke 方法就会销毁对象属性。
实战以动态校验为例来进行讲解。
来看一看动态校验是如何实现的,在运行时当我们为对象赋值时,进行动态地校验,这里代码很清晰,估计大家一看就明白逻辑,这也就是会说话的代码。
最后感谢大家支持!
领取专属 10元无门槛券
私享最新 技术干货