学习
实践
活动
专区
工具
TVP
写文章

javascript 元编程(中)

继续分享在 javascript 中是如何实现元编程,我们先介绍一下在编程中代理以及代理模式是什么,Proxy 从名字上看显而易见,就是对真实对象进行代理,为了是隐藏真实对象,且提供统一接口。大家记住这个就行,以后在设计模式中会为大家详细讲解,在元编程中代理的目的是—提供统一接口。

第一参数为代理的对象,通过 new 创建的 proxy 对象是代理什么对象或类型,可以代理以下类型的对象,提醒他们都是 object 类型。

代理创建对象与其代理对象类型保持一致。

这里处理函数,其实就是复写一些对象一些基本方法,代理也就是在原有对象上再套上一层,为其原有的方法添加新特性。

有关 handler(处理方法)这里通过代码给大家解释,我们通过 hanlder 复写对象的 get 方法,如果属性在对象中不存,我们在获取时就会返回 37 ,代码很简单也很明了,就不进行过多解释了。

这是代理可以复写的方法,在元编程中代理一般不单独使用,他会与下面介绍的 Reflect 对象一起共同完成对元编程的实现。所以他们俩的方法也是一一对应的

介绍 Reflect API

Reflect 不是构造函数, 要使用的时候直接通过Reflect.method()调用, Reflect有的方法和Proxy差不多, 而且多数Reflect方法原生的Object已经重新实现了。

*这里给大家提一下 revoke 方法,如果执行这个 revoke 方法就会销毁对象属性。

实战以动态校验为例来进行讲解。

来看一看动态校验是如何实现的,在运行时当我们为对象赋值时,进行动态地校验,这里代码很清晰,估计大家一看就明白逻辑,这也就是会说话的代码。

最后感谢大家支持!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180419G1RSFE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券