欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Javascript對(duì)象及Proxy工作原理詳解

 更新時(shí)間:2022年08月02日 10:32:25   作者:冒菜師  
這篇文章主要為大家介紹了Javascript對(duì)象及Proxy工作原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

這一章其實(shí)算是javascript的科普文章,其實(shí)這本書(shū)的讀者一般都不會(huì)是入門者,因此按道理說(shuō)應(yīng)該不需要再科普才對(duì)。但是作者依舊安排了這一章,證明就是這一章內(nèi)容與我們以為的對(duì)象不一樣。

Javascript中一切皆對(duì)象

這一句話大家應(yīng)該耳熟能詳,對(duì)于常規(guī)的字面量對(duì)象,和new出來(lái)的對(duì)象,大家應(yīng)該都能分辨

const str = ''
const str2 = new String()
const obj = {}
const obj2 = Object.create()

但是根據(jù)ECMA,在javascript中其實(shí)分為2種對(duì)象:常規(guī)對(duì)象異質(zhì)對(duì)象。任何不屬于常規(guī)對(duì)象的都叫異質(zhì)對(duì)象。

在javascript的世界中,函數(shù)也是一個(gè)對(duì)象。當(dāng)我們指向Obj.foo時(shí),其實(shí)就會(huì)調(diào)用對(duì)象內(nèi)部[[Get]]方法去獲取這個(gè)值,在ECMA中規(guī)定了如下內(nèi)部方法(網(wǎng)圖)。所以

所以,普通對(duì)象必須具有一組被稱為基本內(nèi)部方法(essential internal methods)的方法所定義的默認(rèn)行為,也就是上圖。如果改變了默認(rèn)方法,那么就是異質(zhì)對(duì)象。

比如Array,當(dāng)我們把Array.lenght = 0,它會(huì)清空數(shù)組。

當(dāng)我看到這張圖就知道了,如何判斷一個(gè)變量到底是普通對(duì)象還是函數(shù)呢?答案就是判斷它使用了[[Get]]還是[[Call]]。

毫無(wú)疑問(wèn),Proxy是異質(zhì)對(duì)象,它可以直接性改變一些默認(rèn)方法。當(dāng)我們?cè)?code>Proxy中沒(méi)有定義Get攔截器的時(shí)候,他會(huì)調(diào)用對(duì)象內(nèi)部自己的[[Get]]代理透明.

這一段話我反復(fù)看了很久,才明白它的意思。其實(shí),proxy并不會(huì)直接改變對(duì)象內(nèi)部方法和行為,它是通過(guò)指定需要代理的方法,去執(zhí)行攔截的功能,這也與Proxy的用法符合。

const p = new Proxy(obj,{/*被代理的屬性*/})

這時(shí)候p是與obj完全不相同的對(duì)象,有著不一樣的內(nèi)存地址。這就導(dǎo)致,當(dāng)我們不能直接在p上去操縱obj,這時(shí)候我們就要反射Reflect,反射猶如一面鏡子,映照著原始對(duì)象的地址,我們?nèi)ゲ僮髟紝?duì)象obj,而不是p。

前面2章講了一些關(guān)于ProxyReflect的八股文,下一章就是具體講解vue3如何使用Proxy了。

以上就是Javascript對(duì)象及Proxy工作原理詳解的詳細(xì)內(nèi)容,更多關(guān)于Javascript對(duì)象Proxy的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue2.0的虛擬DOM渲染思路分析

    vue2.0的虛擬DOM渲染思路分析

    vue2.0采用了虛擬DOM來(lái)代替對(duì)真實(shí)DOM的操作,最后通過(guò)某種機(jī)制來(lái)完成對(duì)真實(shí)DOM的更新,渲染視圖。這篇文章主要介紹了vue2.0的虛擬DOM渲染,需要的朋友可以參考下
    2018-08-08
  • 淺談VUE單頁(yè)應(yīng)用首屏加載速度優(yōu)化方案

    淺談VUE單頁(yè)應(yīng)用首屏加載速度優(yōu)化方案

    這篇文章主要介紹了淺談VUE單頁(yè)應(yīng)用首屏加載速度優(yōu)化方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • 組件庫(kù)中使用 vue-i18n 國(guó)際化的案例詳解

    組件庫(kù)中使用 vue-i18n 國(guó)際化的案例詳解

    這篇文章主要介紹了組件庫(kù)中使用 vue-i18n 國(guó)際化,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 關(guān)于vue v-for 循環(huán)問(wèn)題(一行顯示四個(gè),每一行的最右邊那個(gè)計(jì)算屬性)

    關(guān)于vue v-for 循環(huán)問(wèn)題(一行顯示四個(gè),每一行的最右邊那個(gè)計(jì)算屬性)

    這篇文章主要介紹了關(guān)于vue v-for 循環(huán)問(wèn)題(一行顯示四個(gè),每一行的最右邊那個(gè)計(jì)算屬性),需要的朋友可以參考下
    2018-09-09
  • 前端token中4個(gè)存儲(chǔ)位置的優(yōu)缺點(diǎn)說(shuō)明

    前端token中4個(gè)存儲(chǔ)位置的優(yōu)缺點(diǎn)說(shuō)明

    這篇文章主要介紹了前端token中4個(gè)存儲(chǔ)位置的優(yōu)缺點(diǎn)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 分享7個(gè)成為更好的Vue開(kāi)發(fā)者的技巧

    分享7個(gè)成為更好的Vue開(kāi)發(fā)者的技巧

    作為使用Vue已經(jīng)很多年的人,特別是去年一直在使用?Vue3,因此,學(xué)到了很多東西。所以本文為大家準(zhǔn)備了7個(gè)讓我們成為更好?Vue?開(kāi)發(fā)者的技巧,需要的可以參考一下
    2022-06-06
  • Vue技巧Element Table二次封裝實(shí)戰(zhàn)示例

    Vue技巧Element Table二次封裝實(shí)戰(zhàn)示例

    這篇文章主要為大家介紹了Vue技巧Element Table二次封裝實(shí)戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • vue源碼解讀子節(jié)點(diǎn)優(yōu)化更新

    vue源碼解讀子節(jié)點(diǎn)優(yōu)化更新

    這篇文章主要為大家介紹了vue源碼解讀子節(jié)點(diǎn)優(yōu)化更新示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Vue?watch監(jiān)聽(tīng)使用的幾種方法

    Vue?watch監(jiān)聽(tīng)使用的幾種方法

    watch是由用戶定義的數(shù)據(jù)監(jiān)聽(tīng),當(dāng)監(jiān)聽(tīng)的屬性發(fā)生改變就會(huì)觸發(fā)回調(diào),這項(xiàng)配置在業(yè)務(wù)中是很常用。在面試時(shí),也是必問(wèn)知識(shí)點(diǎn),一般會(huì)用作和computed進(jìn)行比較。那么本文就來(lái)帶大家從源碼理解watch的工作流程,以及依賴收集和深度監(jiān)聽(tīng)的實(shí)現(xiàn)
    2022-12-12
  • vue項(xiàng)目本地開(kāi)發(fā)使用Nginx配置代理后端接口問(wèn)題

    vue項(xiàng)目本地開(kāi)發(fā)使用Nginx配置代理后端接口問(wèn)題

    這篇文章主要介紹了vue項(xiàng)目本地開(kāi)發(fā)使用Nginx配置代理后端接口問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評(píng)論