# 關于 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)

其實還有個`*` 號!這個別忘記啊!
- 關于本書
- 目錄簡介
- 關于這本書你需要知道的
- 序
- 前言
- 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過時了嗎?
- ==個人筆記==