欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Configation什么意思

傅智翔2年前11瀏覽0評論

Configation什么意思?

基本概念

字面意思的理解就是代理。

用于定義基本操作的自定義行為,就是我們可以自定義某些行為,比如屬性的查找,賦值,枚舉,函數調用等。

實際上我們利用這個Proxy實現對編程語言進行編程,就是把一些內部的方式,內置的方法改變了,這種編程就叫做語言編程。屬性代理就做攔截。

關于Proxy需要注意的地方有:Proxy內部的this關鍵字的指向是Proxy代理本身;它的構建方式需要借助一個Proxy的構造函數new Proxy(target,handler),其中target叫做目標對象,Proxy構造函數返回的是一個包裝過后的目標對象,handler是代理的行為的函數。

代理操作

, 攔截某個屬性的讀取操作,接收三個參數:target(目標對象)、property(屬性名)、receiver(一般是Proxy對象本身,可選參數)

get屬性攔截可以繼承,需要注意的一點是,當某個對象不可配置(configurable)或者不可寫(writable),使用get會報錯。

, 攔截某個屬性的賦值操作 set屬性有四個參數:target(目標對象)、property(屬性名)、value(屬性值)、receiver(Proxy實例本身,可選參數)

同樣的,在不可配置(configurable),不可寫(writable)的里面,使用set不生效。

, 函數調用、call和apply攔截 apply接收三個參數:target(目標對象)、thisArg(目標對象this)、argumentsList(目標對象參數數組) , 攔截對象是否具有某個屬性 - hasProperty has有兩個參數:target(目標對象)、prop(查詢的屬性名)。返回一個布爾值,true or false。

注意的點:has不攔截for in循環;對象不可配置(configurable)時,使用has會報錯。

, 攔截new操作符 construct接收三個參數:target(目標對象)、argumentsList(構造函數參數)、newTarget(最初被調用的構造函數,為了方便能夠得到原來構造函數想要得到的結構)。

注意:返回值必須是對象。

, 攔截屬性遍歷 own只有一個參數:target(目標對象)。 , 攔截刪除操作 deleteProperty接收兩個參數:target(目標對象)、property(刪除的屬性名)。對象不可配置(configurable),使用deleteProperty會報錯 , 攔截Object.defineProperty defineProperty接收三個參數:target(目標對象)、property(屬性名)、descriptor(描述樹)。屬性不可擴展(non-extensible)會報錯,不可配置(configurable)或者不可寫(writable)使用defineProperty不生效。 , 攔截Object.getOwnPropertyDescriptor getOwnPropertyDescriptor接收兩個參數:target(目標對象)、prop(屬性名稱)。, 攔截獲取對象原型 getPrototypeOf 接收一個參數:target (目標對象)。必須返回對象或null。 , 攔截Object.isExtensible getPrototypeOf 接收一個參數:target (目標對象)。必須返回布爾值。, 攔截Object.preventExtensions preventExtensions 接收一個參數:target (目標對象)。必須返回一個布爾值。, 攔截Object.setPrototypeOf setPrototypeOf 接收兩個參數:target (目標對象)、proto (原型對象)。

設置代理之后如何得到默認的行為?有兩種方式,一種是Proxy代理取消,另一種是使用reflect。

Proxy代理取消

內部提供的方法:revocable