Proxy

Proxy 對象用于定義基本操作的自定義行為(如屬性查找惭笑,賦值坯约,枚舉,函數(shù)調(diào)用等)漓糙。

語法
let obj = new Proxy(target, handler);
參數(shù)
  • targetProxy包裝的目標(biāo)對象(可以是任何類型的對象,包括原生數(shù)組烘嘱,函數(shù)昆禽,甚至另一個代理)。
  • handler 一個對象蝇庭,其屬性是當(dāng)執(zhí)行一個操作時定義代理的行為的函數(shù)醉鳖。
Proxy 支持的攔截操作
  • get(target, propKey, receiver):攔截對象屬性的讀取,比如proxy.fooproxy['foo']哮内。

  • set(target, propKey, value, receiver):攔截對象屬性的設(shè)置盗棵,比如proxy.foo = vproxy['foo'] = v,返回一個布爾值北发。

  • set(target, propKey, value, receiver):攔截對象屬性的設(shè)置漾根,比如proxy.foo = vproxy['foo'] = v,返回一個布爾值鲫竞。

  • deleteProperty(target, propKey):攔截delete proxy[propKey]的操作,返回一個布爾值逼蒙。

  • ownKeys(target):攔截Object.getOwnPropertyNames(proxy)从绘、Object.getOwnPropertySymbols(proxy)Object.keys(proxy)是牢、for...in循環(huán)僵井,返回一個數(shù)組。該方法返回目標(biāo)對象所有自身的屬性的屬性名驳棱,而Object.keys()的返回結(jié)果僅包括目標(biāo)對象自身的可遍歷屬性批什。

  • 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),返回一個對象淌实。

  • isExtensible(target):攔截Object.isExtensible(proxy)冻辩,返回一個布爾值。

  • setPrototypeOf(target, proto):攔截Object.setPrototypeOf(proxy, proto)拆祈,返回一個布爾值恨闪。如果目標(biāo)對象是函數(shù),那么還有兩種額外操作可以攔截放坏。

  • apply(target, object, args):攔截 Proxy 實例作為函數(shù)調(diào)用的操作咙咽,比如proxy(...args)proxy.call(object, ...args)轻姿、proxy.apply(...)犁珠。

  • construct(target, args):攔截 Proxy 實例作為構(gòu)造函數(shù)調(diào)用的操作,比如new proxy(...args)互亮。

示例代碼
/**
 * 代理
 * @type {{get: (function(*, *): number)}}
 */
let handler = {
    get: function (target, name) {
        return name in target ? target[name] : 37;
    }
};

let target = {a: 1, b: 2};

let p = new Proxy(target, handler);
p.a = 3;
p.b = undefined;
target.a = 1;
console.log(p.a, p.b);
console.log('c' in p, p.c);
console.log(p);
console.log(target);
參考資料
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末犁享,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子豹休,更是在濱河造成了極大的恐慌炊昆,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件威根,死亡現(xiàn)場離奇詭異凤巨,居然都是意外死亡,警方通過查閱死者的電腦和手機洛搀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門敢茁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人留美,你說我怎么就攤上這事彰檬。” “怎么了谎砾?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵逢倍,是天一觀的道長。 經(jīng)常有香客問我景图,道長较雕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任挚币,我火速辦了婚禮亮蒋,結(jié)果婚禮上扣典,老公的妹妹穿的比我還像新娘。我一直安慰自己宛蚓,他們只是感情好激捏,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凄吏,像睡著了一般远舅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痕钢,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天图柏,我揣著相機與錄音,去河邊找鬼任连。 笑死蚤吹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的随抠。 我是一名探鬼主播裁着,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拱她!你這毒婦竟也來了二驰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤秉沼,失蹤者是張志新(化名)和其女友劉穎桶雀,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唬复,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡矗积,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了敞咧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棘捣。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖休建,靈堂內(nèi)的尸體忽然破棺而出乍恐,到底是詐尸還是另有隱情,我是刑警寧澤丰包,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站壤巷,受9級特大地震影響邑彪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胧华,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一寄症、第九天 我趴在偏房一處隱蔽的房頂上張望宙彪。 院中可真熱鬧,春花似錦有巧、人聲如沸释漆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽男图。三九已至,卻和暖如春甜橱,著一層夾襖步出監(jiān)牢的瞬間逊笆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工岂傲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留难裆,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓镊掖,卻偏偏與公主長得像乃戈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子亩进,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Proxy 對象 Proxy 用來修改某些默認(rèn)操作症虑,等同于在語言層面做出修改。所以屬于一種元編程(meta pro...
    faremax閱讀 351評論 0 0
  • Proxy代理是一個共通的概念镐侯,可以起到攔截的作用侦讨。ES6里將Proxy標(biāo)準(zhǔn)化了,提供了Proxy構(gòu)造函數(shù)苟翻,用來生...
    張歆琳閱讀 10,145評論 1 7
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理韵卤,服務(wù)發(fā)現(xiàn),斷路器崇猫,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 靜靜的躺那 睡著很好不用去想 靜靜的躺那 睡著很好可以夢見你 靜靜的躺那和死有什么區(qū)別 死也是我的歸宿…… 三生石...
    summerwhatever閱讀 249評論 4 2
  • 常常聽到有些人因為失戀而導(dǎo)致精神失常诅炉、因為抑郁而選擇自殺蜡歹。 在我看來,這完全是心態(tài)不好導(dǎo)致的涕烧。 有些人負(fù)債三十萬...
    文靜視界閱讀 618評論 0 1