Vue监听数据变化原理
话不多说上代码
123456789101112131415161718192021222324252627282930313233 let data = {name: 'tyy'};observe(data);/*** 遍历源数据* @param obj*/function observe(obj) {if (!obj || typeof obj !== 'object') return;for (let key in obj) {defineReactive(obj, key, obj[key]);}}/*** 监听数据* @param obj* @param key* @param val*/function defineReactive(obj, key, val) {// 监听对象的子对象的数据变化observe(val);Object.defineProperty(obj, key, {get: () => {return val;},set: (newValue) => {val = newValue;console.log('i am change')},writeable: true, // 是否可写enumerable: true, // 是否可枚举configurable: false // 是否递归}