国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ES6 Proxy的學(xué)習(xí)與理解

LinkedME2016 / 1637人閱讀

摘要:是中添加的內(nèi)置對(duì)象,和配合功能十分強(qiáng)大。理解根據(jù)的文檔,是對(duì)原對(duì)象的包裝。可以包裝的內(nèi)容包括一系列等,值得注意的是同樣是一種可以攔截的操作。同時(shí),對(duì)于未定義的操作保持原結(jié)果。

問(wèn)題

前一段時(shí)間在字節(jié)跳動(dòng)時(shí)聊到了Proxy。起因是問(wèn)道Vue中數(shù)據(jù)綁定的實(shí)現(xiàn),回答通過(guò)設(shè)置setter和getter實(shí)現(xiàn),問(wèn)這樣有什么缺點(diǎn),答在對(duì)對(duì)象的屬性的監(jiān)控方面存在瑕疵,例如通過(guò)直接設(shè)置數(shù)組下標(biāo)進(jìn)行賦值,或者對(duì)對(duì)象直接進(jìn)行修改,是無(wú)法觀察到的,必須使用Vue.set添加,或者使用Array.prototype.push等方法。
面試官介紹說(shuō)在Vue3中已經(jīng)通過(guò)Proxy解決了這個(gè)問(wèn)題。Proxy是ES6中添加的內(nèi)置對(duì)象,和Reflect配合功能十分強(qiáng)大。正好今天看到一個(gè)問(wèn)題。

理解

根據(jù)MDN的文檔,Proxy是對(duì)原對(duì)象的包裝。可以包裝的內(nèi)容包括一系列g(shù)et、set等,值得注意的是getPrototypeOf同樣是一種可以攔截的操作。同時(shí),對(duì)于未定義的操作保持原結(jié)果。
在instanceof的頁(yè)面,可以看到如下示例

function C() {}
function D() {}

var o = new C();

// true, because: Object.getPrototypeOf(o) === C.prototype
o instanceof C;

那么,在上面那個(gè)問(wèn)題中,既然未定義proxy的getPrototypeOf,那它就該與原對(duì)象保持一致。使用以下代碼進(jìn)行驗(yàn)證:

Object.getPrototypeOf(proxy) === Array.prototype //true
進(jìn)一步思考

那么,是不是對(duì)于一切行為,在不做任何攔截的情況下,就能保證與目標(biāo)對(duì)象的行為完全一致呢?很顯然,這是不可能的。例如

a = {}
b = new Proxy(a, {})
console.log(a === b) //false

以及this的指向問(wèn)題(案例來(lái)自阮一峰文章)

const target = {
  m: function () {
    console.log(this === proxy);
  }
};
const handler = {};

const proxy = new Proxy(target, handler);

target.m() // false
proxy.m()  // true

雖然大部分情況下這應(yīng)該不會(huì)成為大的障礙,但遇到錯(cuò)誤的時(shí)候可以從這里入手尋找問(wèn)題。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/101747.html

相關(guān)文章

  • ES6Proxy學(xué)習(xí)

    摘要:在中構(gòu)造器的典型特點(diǎn)就是首字母大寫,我們通過(guò)原對(duì)象代理列表格式去創(chuàng)建對(duì)象創(chuàng)建的這個(gè)對(duì)象我們稱之為代理對(duì)象。就是原對(duì)象是當(dāng)前的屬性名是代理對(duì)象。理解為明星的經(jīng)理人消極怠工原封不動(dòng)地轉(zhuǎn)告外界的信息給明星本身。但是要注意與是兩個(gè)不同的對(duì)象。 ES6之Proxy proxy的中文有代理的意思。在其他的程序設(shè)計(jì)語(yǔ)言中這個(gè)單詞也具有類似的含義。 它是什么 Proxy是一個(gè)構(gòu)造器。在js中構(gòu)造器的典...

    UnixAgain 評(píng)論0 收藏0
  • 【資源集合】 ES6 元編程(Proxy & Reflect & Symbol)

    摘要:理解元編程和是屬于元編程范疇的,能介入的對(duì)象底層操作進(jìn)行的過(guò)程中,并加以影響。元編程中的元的概念可以理解為程序本身。中,便是兩個(gè)可以用來(lái)進(jìn)行元編程的特性。在之后,標(biāo)準(zhǔn)引入了,從而提供比較完善的元編程能力。 導(dǎo)讀 幾年前 ES6 剛出來(lái)的時(shí)候接觸過(guò) 元編程(Metaprogramming)的概念,不過(guò)當(dāng)時(shí)還沒有深究。今天在應(yīng)用和學(xué)習(xí)中不斷接觸到這概念,比如 mobx 5 中就用到了 Pr...

    aikin 評(píng)論0 收藏0
  • JS每日一題:如何理解es6Proxy

    20190124問(wèn): 如何理解es6中的Proxy? 試題解析:對(duì)proxy的理解,可能會(huì)延伸到vue的雙向綁定 Proxy(代理) 定義 可以理解為為目標(biāo)對(duì)象架設(shè)一層攔截,外界對(duì)該對(duì)象的訪問(wèn),都必須通過(guò)這層攔截 簡(jiǎn)單示例: const obj = new Proxy({}, { get: (target, key, receiver) => { return JS ...

    tinysun1234 評(píng)論0 收藏0
  • JS每日一題:如何理解es6Proxy

    20190124問(wèn): 如何理解es6中的Proxy? 試題解析:對(duì)proxy的理解,可能會(huì)延伸到vue的雙向綁定 Proxy(代理) 定義 可以理解為為目標(biāo)對(duì)象架設(shè)一層攔截,外界對(duì)該對(duì)象的訪問(wèn),都必須通過(guò)這層攔截 簡(jiǎn)單示例: const obj = new Proxy({}, { get: (target, key, receiver) => { return JS ...

    PumpkinDylan 評(píng)論0 收藏0
  • 理解JavascriptProxy

    摘要:關(guān)于在計(jì)算機(jī)領(lǐng)域是一個(gè)很普遍的概念,中文通常翻譯為代理,代理一般用于描述某人或某事代表他人行事。常見的概念有代理服務(wù)器反向代理代理模式等。所以至少可以起到兩方面的作用進(jìn)行訪問(wèn)控制和增加功能。理解了上面兩個(gè)問(wèn)題,學(xué)習(xí)的就簡(jiǎn)單多了。 關(guān)于Proxy Proxy在計(jì)算機(jī)領(lǐng)域是一個(gè)很普遍的概念,中文通常翻譯為代理,代理一般用于描述某人或某事代表他人行事。常見的概念有Proxy Server(代...

    adie 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<