const person = {
name: 'xiaoyang',
age: 12,
};
// 1. vue2的属性劫持
let p = {};
Object.defineProperty(p, 'name', {
configurable: true,
get() {
console.log('读取了name属性');
return person.name;
},
set(value) {
console.log('设置了name属性');
person.name = value;
},
});
// 2. vue3的属性代理
const p = new Proxy(person, {
get(target, prop) {
console.log(`有人读取了${prop}属性`);
// return target[prop]
return Reflect.get(target, prop);
},
set(target, prop, value) {
console.log(`有人设置了${prop}属性`);
// target[prop] = value;
return Reflect.set(target, prop, value);
},
defineProperty(target, prop) {
// return delete target[prop]
return Reflect.deleteProperty(target, prop);
},
});
```
vue2和vue3的数据双向绑定小测试
最新推荐文章于 2024-09-16 20:08:29 发布