ES6 - Reflect API



ES6 引入了圍繞超程式設計的新特性,超程式設計涉及檢查或修改程式的結構,或更改語言本身的工作方式。

以下是三種超程式設計形式:

  • 內省 - 內省是指程式收集自身資訊。一些用於內省的 JavaScript 運算子示例是typeof、instanceof等。

  • 自我修改 - 自我修改是指在執行時修改程式的結構。它涉及在執行時訪問或建立新屬性。換句話說,自我修改是指某些程式碼修改自身。

  • 干預 - 指程式碼修改程式語言的預設行為。干預涉及修改程式語言的語義或在執行時向程式新增新的構造。

ES6 引入了 Reflect 應用程式程式設計介面 (Reflect API) 和 Proxy API 來支援超程式設計。

使用 Reflect API 進行超程式設計

ES6 中的 Reflect API 允許我們在執行時檢查或修改程式的類、物件、屬性和方法。Reflect API 提供全域性 Reflect 物件,該物件具有可用於內省的靜態方法。這些方法用於發現有關程式碼的底層資訊。Reflect API 可用於構建在執行時檢查和內省程式的自動化測試框架。

下面列出了一些常用的 Reflect 物件方法:

序號 方法和描述
1 Reflect.apply()

使用 args 引數中指定的引數呼叫目標函式

2 Reflect.construct()

等效於呼叫 new target(...args) 類物件

3 Reflect.get()

返回屬性值的函式。

4 Reflect.set()

為屬性賦值的函式。返回一個布林值,如果更新成功則為 true。

5 Reflect.has()

in 運算子作為函式。返回一個布林值,指示是否存在自己的屬性或繼承的屬性。

廣告

© . All rights reserved.