function defineReactive(data, key, val) { Object.defineProperty(data, key, { // 可枚举 enumerable: true, // 可以被配置,比如可以被 delete configurable: true, // getter get() { return val; }, // setter set(newValue) { if (val === newValue) return false; val = newValue; } }); }; let obj = {}; defineReactive(obj, 'a', 10); // 设置 a 属性 console.log(obj.a); // 10 访问 a 的值 obj.a = 100; // 改变 a 的值 console.log(obj.a); // 100 访问改变后 a 的值
defineReactive函数,利用闭包封装Object.defineProperty()
关注
打赏