寫給自己看的(一)

2021-09-13 17:16:45 字數 3196 閱讀 6312

第一次寫部落格,琢磨了好久不知道該寫些什麼,後來想了想,就當學習筆記了嘛,反正也沒人看╮(╯▽╰)╭。

正好今天在看雙越老師的設計模式的時候講到了**模式,於是就順勢查了查es6中proxy的語法,看了看阮一峰老師的書,感覺又開啟了新世界的大門。

先說說什麼是proxy吧。proxy英文的意思是**,用阮老師的話說,就是proxy 用於修改某些操作的預設行為,等同於在語言層面做出修改,所以屬於一種「元程式設計」(meta programming),即對程式語言進行程式設計。

好吧,簡單講就是在目標物件外邊加了一層攔截層,在訪問目標的時候會進行一次攔截、過濾。

es6原生提供了proxy建構函式,可以用來生成例項。

扔兩行**先

// 生成乙個proxy例項

var proxy =

newproxy

(target, handler)

;

其中target代表的就是我們要**的目標函式;

handler代表的就是我們要做的攔截的動作;

proxy一共支援13種攔截操作,阮老師講的很是詳細,我拿過來抄一遍╮(╯▽╰)╭,詳情參照 [這兒][4].;

get(target, propkey, receiver):攔截物件屬性的讀取,比如proxy.fooproxy['foo']

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)

// 定義乙個明星

let star =

// 再定義乙個經紀人

let agent =

newproxy

(star,

if(name ===

'price'

)// 其他的明星資訊可以告訴外面

return target[name];}

,set

:function

(target, name, value)

else}}

})//輸出姓名,不保密,直接返回明星的姓名

console.

log(agent.name)

;//朱xx

//明星**要保密,所以返回了**人的**

console.

log(agent.phone)

;//18622222222

//明星自己不**,輸出的是**人報的價

console.

log(agent.price)

;//200000

//給**人**120000

agent.customprice =

120000

;//**太低了,丟擲錯誤

//重新**

agent.customprice =

200000

;//**人覺得合理,那麼明星就值這個價了

console.

log(agent.customprice)

;//200000

上面的例子裡面主要使用了proxy的get和set屬性。這裡建議大家可以去學習一下雙越老師的js設計模式課程,在講到**模式的時候講了這個明星**人的例子,講的很形象,我只是拿來湊個熱鬧~哈哈哈

這第一篇寫的有點爛了~啊哈哈哈哈哈哈哈

反正就是給自己當筆記寫的,等想不起來的時候回來看一眼,東拼西湊的從各位大神那拿來不少東西,其實離真正理解還差的遠呢~哈哈哈哈哈哈

就這樣吧~~~~~~~~~~後面加油!

寫給自己看的

我不常寫日誌,不過最近各種事情,還是有點需要記錄下來。今天下午上資料庫的時候,本來以為被鄙視了的 筆試居然發來恭喜通過的通知,說是等待面試,出乎意料的同時也感嘆rp又用掉了很多 最近的rp消耗確實有點失常,painterbee在mm上的表現就不說了,在校賽上也拿到了之前沒拿過的高名次,雖然是題目的區...

寫給自己看的Promise

static pending pending 準備狀態 static fulfilled fulfilled 解決狀態 static rejected rejected 拒絕狀態 1.初始化狀態 值 then中沒 有處理的函式陣列 2.將resolve和reject函式傳遞 出去 construct...

無題!寫給自己看的!

好吧!這個東西是寫給自己看的,可以看做是日記,或者是隨筆吧!這些天感覺實在太墮落了,至少,在寫完這篇文章之後,我這學期不會再墮落了!從星期六晚上開始,我就一直在墮落,事情源於win8,說實話,我討厭win8,雖然說它比win7要強上一些,不過感覺用不慣!為什麼墮落和win8扯上關係呢?因為哥這幾天花...