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 = v
或proxy['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也可以表示...