- Object.defineProperty只能劫持對象的屬性,從而需要對每個對象,每個屬性進行遍歷,如果,屬性值是對象,還需要深度遍歷。Proxy可以劫持整個對象,並返回一個新的對象。
- Proxy不僅可以代理對象,還可以代理數組。還可以代理動態增加的屬性。
Object.defineProperty本身有一定的監控到數組下標變化的能力:
Object.defineProperty本身是可以監控到數組下標的變化的,但是在 Vue 中,從性能/體驗的性價比考慮,尤大大就棄用了這個特性。具體我們可以參考 《記一次思否問答的問題思考:Vue為什么不能檢測數組變動》這篇文章,文章底部配圖中有尤大大的嚴肅回復截圖; 下方的討論區也很值得大家下去看一看,有對於 for / forEach / for .. in .. 幾個循環方式的討論。
關於 Vue 3.0 的其他信息我們可以參考 尤大大發布的 Vue 3.0 新特性預覽PPT
另外補充一些其他資料給大家: