# 关于 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)
其实还有个`*` 号!这个别忘记啊!
- 关于本书
- 目录简介
- 关于这本书你需要知道的
- 序
- 前言
- I 背景
- 1. About ECMAScript 6 (ES6)
- 2. 常见问题:ECMAScript 6
- 3. 一个JavaScript:在 ECMAScript 6 中避免版本化
- 4. 核心ES6特性
- II 数据
- 5. New number and Math features
- 6. 新的字符串特性
- 7. Symbol
- 8. Template literals
- 第9章 变量与作用域
- 第10章 解构
- 第11章 参数处理
- III 模块化
- 12. ECMAScript 6中的可调用实体
- 13. 箭头函数
- 14. 除了类之外的新OOP特性
- 15. 类
- 16. 模块
- IV 集合
- 17. The for-of loop
- 18. New Array features
- 19. Maps and Sets
- 20. 类型化数组
- 21. 可迭代对象和迭代器
- 22. 生成器( Generator )
- V 标准库
- 23. 新的正则表达式特性
- 24. 异步编程 (基础知识)
- 25. 异步编程的Promise
- VI 杂项
- 26. Unicode in ES6
- 27. 尾部调用优化
- 28 用 Proxy 实现元编程
- 29. Coding style tips for ECMAScript 6
- 30. 概述ES6中的新内容
- 注释
- ES5过时了吗?
- ==个人笔记==