Proxy的簡單用法

2021-10-04 15:00:28 字數 1974 閱讀 5115

proxy,原意為**,可以修改某些操作的預設行為,即在目標物件之前架設和一層「攔截」,在這層攔截上可以對外界的訪問進行過濾和修改。

其屬於一種「元程式設計」。

var proxy =

newproxy

(target,handler)

其中,target引數表示所要攔截的目標物件,handler引數也是物件,用來定製攔截行為。

proxy支援一共13種攔截操作。

get(target,propkey,receiver): 攔截物件屬性的讀取。

propkey為屬性名,receiver是proxy例項本身(可選)。

var person =

;var proxy =

newproxy

(person,

else}}

);proxy.name // "張三"

proxy.age // 丟擲乙個錯誤

其餘操作使用方法大體類似,還需私下繼續學習。

set(target, propkey, value, receiver):攔截物件屬性的設定,比如proxy.foo = vproxy['foo'] = v,返回乙個布林值。

has(target, propkey):攔截propkey in proxy的操作,返回乙個布林值。

deleteproperty(target, propkey):攔截delete proxy[propkey]的操作,返回乙個布林值。

ownkeys(target):攔截object.getownpropertynames(proxy)object.getownpropertysymbols(proxy)object.keys(proxy)for...in迴圈,返回乙個陣列。該方法返回目標物件所有自身的屬性的屬性名,而object.keys()的返回結果僅包括目標物件自身的可遍歷屬性。

getownpropertydescriptor(target,propkey):攔截object.getownpropertydescriptor(proxy,propkey),返回屬性的描述物件。

defineproperty(target, propkey,propdesc):攔截object.defineproperty(proxy, propkey, propdesc)object.defineproperties(proxy, propdescs),返回乙個布林值。

preventextensions(target):攔截object.preventextensions(proxy),返回乙個布林值。

getprototypeof(target):攔截object.getprototypeof(proxy),返回乙個物件。

i***tensible(target):攔截object.i***tensible(proxy),返回乙個布林值。

setprototypeof(target, proto):攔截object.setprototypeof(proxy, proto),返回乙個布林值。如果目標物件是函式,那麼還有兩種額外操作可以攔截。

construct(target, args):攔截 proxy 例項作為構造函式呼叫的操作,比如new proxy(...args)

mysql的簡單用法 mysql簡單用法

刪除使用者 drop user jack drop比delete刪除的優勢在於drop可以刪除使用者的許可權,更加徹底 更改使用者名稱 rename user jack to jacknew 使用者的都存在與user表中,更改名稱,許可權不變 更改使用者密碼 update mysql.user se...

sudo的簡單用法

sudo 的簡單用法 sudo 是linux 下一種能讓普通使用者執行 root 使用者或者其他使用者的命令 在 linux 中為了能方便的作業系統,同事也為了減輕管理員的負擔,這裡就有了 sudo 這個工具,讓普通使用者能執行 root 使用者的一部分權利。在 linux unix 下專門為 su...

XPath的簡單用法

xpath 使用路徑表示式來選取 xml 文件中的節點或節點集。下面使用乙個簡單的xml檔案內容 定位到節點名稱為parent1的元素 xpath為 tree parent1 其中前面加 表示根元素,此時的xpath就是絕對路徑了,在這裡的例子中,因為tree為根元素,所以這裡的xpath也可以表示...