學習筆記 es2015 Proxy 物件

2021-10-22 17:41:27 字數 2135 閱讀 4970

proxy 物件

響應**器,可以監視到物件的讀寫過程

const personproxy = new proxy(person, {}

通過get(){}方法監聽屬性的讀取訪問, 通過set(){}方法監聽物件中設定屬性的過程

get (target, property) {}

const person =

const personproxy =

newproxy

(person,

,set()

})console.

log(personproxy.name)

console.

log(personproxy.***)

一般情況下會先判斷是否有被訪問的屬性

// 監視屬性讀取

get(target, property)

,

get (target, property, value) {}

const person =

const personproxy =

newproxy

(person,

,// 監視屬性設定

set(target, property, value)

is not an int`)}

} target[property]

= value

console.

log(target, property, value)}}

) personproxy.gender =

true

personproxy.age =

100 personproxy.age =

'十八'

優勢1 示例

deleteproperty(target, property){}

const person =

const personproxy =

newproxy

(person,})

delete personproxy.age

console.

log(person)

優勢2 示例

const list =

const listproxy =

newproxy

(list,})

listproxy.

push

(100

)listproxy.

push

(100

)

優勢3 示例

object.defineproperty方式

const person =

object.

defineproperty

(person,

'name',,

set(value)})

object.

defineproperty

(person,

'age',,

set(value)})

person.name =

'jack'

console.

log(person.name)

proxy 方式

// proxy 方式更為合理

const person2 =

const personproxy =

newproxy

(person2,

,set

(target, property, value)})

personproxy.name =

'jack'

console.

log(personproxy.name)

proxy 內部方法參考

es6 Proxy 學習筆記

proxy 可以理解成,在目標物件之前架設一層 攔截 外界對物件的訪問都必須先通過這層攔截,通過這種 操作的機制,可以對外界的訪問進行過濾和修改。let person let obj new proxy person,obj.name lilei obj.age 暫無該值 proxy例項通過prox...

ES6學習筆記三(proxy和reflect)

proxy用法 let monitor new proxy obj,攔截物件設定屬性 set target,key,value else 攔截key in object操作判斷是否屬於object的某個屬性 has target,key else 攔截delete deleteproperty ta...

ES6 Proxy的學習與理解

前一段時間在位元組跳動時聊到了proxy。起因是問道vue中資料繫結的實現,回答通過設定setter和getter實現,問這樣有什麼缺點,答在對物件的屬性的監控方面存在瑕疵,例如通過直接設定陣列下標進行賦值,或者對物件直接進行修改,是無法觀察到的,必須使用vue.set新增,或者使用array.pr...