vue為什么沒有對數組的每一項進行雙向數據綁定?
1.數組在 JS 中常被當作棧,隊列,集合等數據結構的實現方式,會有批量的數據以待遍歷
Vue 中是通過對每個鍵設置 getter/setter 來實現響應式的,開發者使用數組,目的往往是遍歷,此時調用 getter 開銷太大了,所以 Vue 不在數組每個鍵上設置。
Vue數組中的數據是怎么被監聽的?
看來Vue能對數組進行監聽的原因是,把數組的方法重寫了。總結起來就是這幾步:
01先獲取原生 Array 的原型方法,因為攔截后還是需要原生的方法幫我們實現數組的變化。
02對 Array 的原型方法使用 Object.defineProperty 做一些攔截操作。
03把需要被攔截的 Array 類型的數據原型指向改造后原型。