反射 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的关系是什么呢?下一篇文章讲。