1. 程式人生 > >ES6(Proxy 和 Reflect)

ES6(Proxy 和 Reflect)

Proxy 和 Reflect

1.Proxy 和 Reflect 的概念

Proxy 意為 ‘代理’,連線了使用者和真實物件之間的一個層

Reflect 意為‘反射’   反射的是Object

2.適用場景

一、Proxy 語法

1.類似於供應商的原始物件 obj ,通過 Proxy 新生成物件,這個物件是對映 Object 的,使用者訪問 monitor,

通過 Proxy ,再傳遞給 obj 物件。

2.設定最簡單的代理操作(攔截讀取作用)

真實的為 2017-03-11,通過‘代理’的作用,將 2017 替換為 2018.

 3.設定屬性

只能修改 name 屬性(target 為要修改的物件,key為要修改的屬性,value為修改為何值)

此時 name 值已經發生改變

4.判斷當前物件是否有某個屬性

只判斷 name 屬性是否存在

5.刪除

如果屬性是 '_' 開頭的,則刪除

 6.遍歷

(保護 time 屬性)

二、Reflect 語法

1.讀取物件屬性

set

 

has

三、實際應用

 1.判斷格式是否正確(校驗)

 

過濾(校驗)條件

物件

輸出結果

部分屬性做修改

之所以報錯,是因為最後建構函式的返回物件的不是 this ,返回的是對 this 的代理

這就是 Proxy 代理的作用,好處是將 條件 和 物件 隔離開,利於後期程式碼維護