ES6中的反射与代理

52 阅读1分钟

反射 Reflect

官方:developer.mozilla.org/zh-CN/searc…

定义

Reflect 本质上是一个内置的js对象,里面提供了一系列的静态方法。这些方法就是对应了 js 的底层方法(基本方法)。

它是 js 的底层基本方法的一种映射,就像镜子所反射出来的一样,这样理解反射。

es 的理念

想要将所有的操作都 对应一个底层 的 api,即函数式编程。

这样的理念有什么好处?

代码更加纯粹,减少魔法代码,一切的结果都是通过计算得到的,而函数就是一种计算,给一个输入,经过函数体处理,得到输出,作为结果,这样每一步都是有理有据的,不会有魔法

魔法: 语言层面的东西,比如 赋值符号 = , 运算符号 *,+,... , 关键字 in 等等这些比较高层的 方便日常开发语言代码,new 关键字也是。

比如:函数的调用,对象的创建,访问对象属性,...,在 Reflect 中都有对应的 底层API。

Reflect 对象就提供了一系列的底层的 API,和这些操作相对应。

现在觉得 Reflect好像也没啥用,因为平时开发没人会去使用 底层的方法进行开发,直接使用 obj[key]不香吗,非要使用Reflect.get(obj,key,value)...

总结

是的,不过,Reflect的出现,一方面,上面说了,是为了符合 函数式编程的理念,另一方面,是为了实现代理Proxy。

什么是Proxy呢?Proxy和Reflect的关系是什么呢?下一篇文章讲。