企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 关于 Reflect Reflect 是 es6 新增的一个全局对象。顾名思义,反射,类似于 Java 里面的反射机制。在 Java 里面,反射是个很头疼的概念。简单理解为:**通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。对于 Java 来说,程序中一般的对象的类型都是在编译期就确定下来的,而 Java 反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象,即使这个对象的类型在编译期是未知的。** 而对于 js 来说自然是有些不同了。**毕竟 js 不需要编译,同时万物皆对象的特性**,这些都让理解 js 的 reflect 起来相当简单。 对于 JS 中的 reflect,我们就可以理解为:有这么一个全局对象,上面直接挂载了对象的某些特殊方法,这些方法可以通过 `Reflect.apply` 这种形式来使用,当然所有方法都是可以在 Object 的原型链中找到的。是不是相当简单。 ## 使用 reflect 的好处 * Reflect 上面的一些方法并不是专门为对象设计的,比如 Reflect.apply 方法,它的参数是一个函数,如果使用 Object.apply (func) 会让人感觉很奇怪。 * 用一个单一的全局对象去存储这些方法,能够保持其它的 JavaScript 代码的整洁、干净。不然的话,这些方法可能是全局的,或者要通过原型来调用。 * 将一些命令式的操作如 `delete`,`in` 等使用函数来替代,这样做的目的是为了让代码更加好维护,更容易向下兼容;也避免出现更多的保留字。 > [ES6 新特性:Javascript 中的 Reflect 对象](https://www.cnblogs.com/diligenceday/p/5474126.html) > [ES6 Reflect 用法详解](https://juejin.im/post/5d2aa12ae51d455071250ba7) # 关于模块 [When should I use curly braces for ES6 import?](https://stackoverflow.com/questions/36795819/when-should-i-use-curly-braces-for-es6-import/36796281) ![](https://box.kancloud.cn/eb8c8173951cee82cb662c2a4a9b2063_728x387.png) 其实还有个`*` 号!这个别忘记啊!