如何深入理解并实现JavaScript Reflect Metadata的详细机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2467个文字,预计阅读时间需要10分钟。
在ES6规范中,已经存在Reflect API了。简单来说,这个API的作用就是可以函数化地操作变量,同时也是反射。具体关于这个API的内容,可以查看这个教程。然而,我们在这里就先不展开了。
引言
在 ES6 的规范当中,就已经存在 Reflect API 了。简单来说这个 API 的作用就是可以实现对变量操作的函数化,也就是反射。具体的关于这个 API 的内容,可以查看这个教程
然而我们在这里讲到的,却是 Reflect 里面还没有的一个规范,那么就是 Reflect Metadata。
Metadata
想必对于其他语言的 Coder 来说,比如说 Java 或者 C#,Metadata 是很熟悉的。最简单的莫过于通过反射来获取类属性上面的批注(在 JS 当中,也就是所谓的装饰器)。从而可以更加优雅的对代码进行控制。
而 JS 现在有装饰器,虽然现在还在 Stage2 阶段。但是 JS 的装饰器更多的是存在于对函数或者属性进行一些操作,比如修改他们的值,代理变量,自动绑定 this 等等功能。
所以,后文当中我就使用 TypeScript 来进行讲解,因为 TypeScript 已经完整的实现了装饰器。
虽然 Babel 也可以,但是需要各种配置,人懒,不想配置那么多。
但是却无法实现通过反射来获取究竟有哪些装饰器添加到这个类/方法上。
于是 Reflect Metadata 应运而生。
本文共计2467个文字,预计阅读时间需要10分钟。
在ES6规范中,已经存在Reflect API了。简单来说,这个API的作用就是可以函数化地操作变量,同时也是反射。具体关于这个API的内容,可以查看这个教程。然而,我们在这里就先不展开了。
引言
在 ES6 的规范当中,就已经存在 Reflect API 了。简单来说这个 API 的作用就是可以实现对变量操作的函数化,也就是反射。具体的关于这个 API 的内容,可以查看这个教程
然而我们在这里讲到的,却是 Reflect 里面还没有的一个规范,那么就是 Reflect Metadata。
Metadata
想必对于其他语言的 Coder 来说,比如说 Java 或者 C#,Metadata 是很熟悉的。最简单的莫过于通过反射来获取类属性上面的批注(在 JS 当中,也就是所谓的装饰器)。从而可以更加优雅的对代码进行控制。
而 JS 现在有装饰器,虽然现在还在 Stage2 阶段。但是 JS 的装饰器更多的是存在于对函数或者属性进行一些操作,比如修改他们的值,代理变量,自动绑定 this 等等功能。
所以,后文当中我就使用 TypeScript 来进行讲解,因为 TypeScript 已经完整的实现了装饰器。
虽然 Babel 也可以,但是需要各种配置,人懒,不想配置那么多。
但是却无法实现通过反射来获取究竟有哪些装饰器添加到这个类/方法上。
于是 Reflect Metadata 应运而生。

