Appearance
3.数组方法的劫持
本节目标:理解“3.数组方法的劫持”的核心思路,并能把它用于实际开发或面试表达。
说明:原 OneNote 中有图片引用,但图片未包含在导出目录中;本页保留了可用的文字与代码内容。 用户很少通过索引操作数组,内部就想到不对索引进行拦截,因为消耗严重,内部数组不采用defineProperty;
由于我们操作数组主要用到七个方法:push,shift,pop,unshift,reverse,sort,splice,这7个方法是变异方法,就是会更改原数组。
于是,vue想到对数组的这七个方法进行重写;**重写数组原型方法**对数组中对象元素进行监听;这样的话,如果属性是数组,也就是多个值的集合的话:对这个数组的原生七个方法进行改写如果元素是对象就劫持,如果是普通值不处理,同时数组没有监控索引的变化,但是索引存放对应的内容是对象类型,需要被监控;
**将****ob****实例作为****__ob__****属性,挂到数据上**然后,我们在重写的数组方法中,就可以取到这个ob实例了:**增加__ob__属性**
给所有响应式数据增加标识,并且可以在响应式上获取Observer实例上的方法总结:如果数据是对象,会将对象不停的递归,进行劫持如果是数组,会支持数组的方法,并对昂 中不是基本类型的进行检测;
