- 模拟vue2实现响应式
let person = { name:'张三', }
Object.defineProperty(person,'age',{
value:18,
enumerable:true,
writable:true,
configurable:true,
get(){
return number
},
set(value){
number = value
}
})
- 模拟vue3实现响应式
let person = { name:'张三', }
const p = new Proxy(person, {
get(target, propName) {
console.log(`有人读取了p身上的${propName}属性`, target, propName);
return target[propName];
},
set(target, propName, value) {
console.log(
`有人修改了p身上的${propName}属性`,
target,
propName,
value
);
target[propName] = value;
},
deleteProperty(target, propName) {
console.log(`有人读删除了p身上的${propName}属性`, target, propName);
return delete target[propName];
},
});