Vue 的響應式原理中 Object.defineProperty 有什么缺陷?


  1. Object.defineProperty只能劫持對象的屬性,從而需要對每個對象,每個屬性進行遍歷,如果,屬性值是對象,還需要深度遍歷。Proxy可以劫持整個對象,並返回一個新的對象。
  2. Proxy不僅可以代理對象,還可以代理數組。還可以代理動態增加的屬性。

Object.defineProperty本身有一定的監控到數組下標變化的能力:
Object.defineProperty本身是可以監控到數組下標的變化的,但是在 Vue 中,從性能/體驗的性價比考慮,尤大大就棄用了這個特性。具體我們可以參考 《記一次思否問答的問題思考:Vue為什么不能檢測數組變動》這篇文章,文章底部配圖中有尤大大的嚴肅回復截圖; 下方的討論區也很值得大家下去看一看,有對於 for / forEach / for .. in .. 幾個循環方式的討論。

關於 Vue 3.0 的其他信息我們可以參考 尤大大發布的 Vue 3.0 新特性預覽PPT

另外補充一些其他資料給大家:


免責聲明!

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



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