VUE 3.0 Proxy淺談


 

 

一、什么是Proxy ?

  • 1 . Proxy 這個詞的原理為代理,在這里可以表示由它來“代理”某些操作,譯為“代理器”。
  • 2 . Proxy用於修改某些操作的默認行為,也可以理解為在目標對象之前架設一層攔截,外部所有的訪問都必須先通過這層攔截,因此提供了一種機制,可以對外部的訪問進行過濾和修改。
  • 3 . proxy接受一個待代理目標對象和一些包含元操作的對象,為待代理目標創建一個‘屏障’,並攔截所有操作,重定向到自定義的元操作對象上。

二、Proxy的實際用法

const p = new Proxy(target,handler)

target

要包裝的目標對象Proxy。它可以是任何類型的對象,包括本機數組,函數甚至其他代理

  handler

  一個對象,其屬性是定義對代理p執行操作時的行為的函數

VUE3.0升級Proxy的應用????

在VUE2.X版本中,響應式布局一個最重要的API就是Object.defineProperty,用這個API用來做數據劫持。

但是 defineProperty 的缺陷有以下幾個:

  • 1.無法原生監聽數組的變化,需要特殊處理
  • 2.必須遍歷對象的每個屬性(當示例初始化的時,Object.definePropety是從data的根節點遍歷到末節點。一次性便利全部)
  • 3.無法監聽屬性的新增刪除操作(VUE提供Vue.set Vue.delete API,原因就是因為Object.definePropety物件監聽新增刪除操作)

以下來驗證一下Proxy是否會有同樣的問題:

Proxy可以監聽數組

 

 Proxy可以監聽屬性的新增刪除操作

 

 深層遍歷嵌套的對象

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM