Vue数据劫持原理如何实现长尾词数据响应式更新?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1974个文字,预计阅读时间需要8分钟。
源代码:传递门 + Vue会对我们在data中传入的数据进行拦截:对象:递归的为对象的每个属性设置get/set方法数组:修改数组原型的方法,对会修改原数组的操作进行了重写
源代码: 传送门
Vue会对我们在data中传入的数据进行拦截:
- 对象:递归的为对象的每个属性都设置get/set方法
- 数组:修改数组的原型方法,对于会修改原数组的方法进行了重写
在用户为data中的对象设置值、修改值以及调用修改原数组的方法时,都可以添加一些逻辑来进行处理,实现数据更新页面也同时更新。
Vue中的响应式(reactive): 对对象属性或数组方法进行了拦截,在属性或数组更新时可以同时自动地更新视图。在代码中被观测过的数据具有响应性
创建Vue实例
我们先让代码实现下面的功能:
<body> <script> const vm = new Vue({ el: '#app', data () { return { age: 18 }; } }); // 会触发age属性对应的set方法 vm.age = 20; // 会触发age属性对应的get方法 console.log(vm.age); </script> </body>
在src/index.js中,定义Vue的构造函数。
本文共计1974个文字,预计阅读时间需要8分钟。
源代码:传递门 + Vue会对我们在data中传入的数据进行拦截:对象:递归的为对象的每个属性设置get/set方法数组:修改数组原型的方法,对会修改原数组的操作进行了重写
源代码: 传送门
Vue会对我们在data中传入的数据进行拦截:
- 对象:递归的为对象的每个属性都设置get/set方法
- 数组:修改数组的原型方法,对于会修改原数组的方法进行了重写
在用户为data中的对象设置值、修改值以及调用修改原数组的方法时,都可以添加一些逻辑来进行处理,实现数据更新页面也同时更新。
Vue中的响应式(reactive): 对对象属性或数组方法进行了拦截,在属性或数组更新时可以同时自动地更新视图。在代码中被观测过的数据具有响应性
创建Vue实例
我们先让代码实现下面的功能:
<body> <script> const vm = new Vue({ el: '#app', data () { return { age: 18 }; } }); // 会触发age属性对应的set方法 vm.age = 20; // 会触发age属性对应的get方法 console.log(vm.age); </script> </body>
在src/index.js中,定义Vue的构造函数。

