vue中最核心的一个点就是响应式数据,数据发生变化,视图也随之变化,实现响应式的一个重要的知识点就是数据劫持,对数据的取值与赋值进行拦截操作,并附加一些其他的操作
一.es5的Object.defineProperty
这个api是vue1.x与vue2.x实现数据劫持的一个非常重要的api,方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。在前面的对象深入学习中已经详细的说明了,这里就不在赘述了,
1.vue中是如何实现数据劫持的?
function defineReactive () {
//这个是一个中间变量,用于存储属性的真正的值,每次取值或者存值都是对这个属性的操作
var num;
Object.defineProperty(obj, 'num', {
// 可遍历
enumerable: true,
// 不可再配置
configurable: false,
get: