学习VUE3总得知道Proxy怎么使用吧
【摘要】 学习VUE3总得知道Proxy怎么使用吧我们都知道vue2是使用object.defineProxy实现数据监控的,但在vue3中改成了使用JS新增的Proxy对象。今天就来看一下Proxy 是如何使用的Proxy对象用于创建一个对象的代理,进而实现基本操作的拦截和定义。它的基本语法是const p = new Proxy(target, handler)target是使用Proxy包裹的目...
我们都知道vue2是使用object.defineProxy实现数据监控的,但在vue3中改成了使用JS新增的Proxy对象。今天就来看一下Proxy 是如何使用的
Proxy对象用于创建一个对象的代理,进而实现基本操作的拦截和定义。
它的基本语法是
const p = new Proxy(target, handler)
target是使用Proxy包裹的目标对象
const obj = {
name: '伯约同学',
age: 18
}
const objProxy = new Proxy(obj, {
// 获取值时的捕获器
get(target, key) {
console.log(`监听到对象的${key}属性被访问了`, target)
return target[key]
},
// 设置值时的捕获器
set(target, key, newValue) {
console.log(`监听到对象的${key}属性被设置了`, target)
target[key] = newValue
},
// 监听 in 捕获器
has(target, key) {
console.log(`监听到对象的in操作符`, target)
return key in target
},
// 监听 delete 捕获器
deleteProperty(target, key) {
console.log(`监听到对象的delete操作符`, target)
delete target[key]
},
// 获取对象原型捕获器
getPrototypeOf(target) { xxx },
// 设置对象原型捕获器
setPrototypeOf(target, prototype) { xxx },
// 是否可以扩展捕获器
isExtensible() { xxx },
// 阻止扩展捕获器
preventExtensions() { xxx },
// 获取自己的属性描述符捕获器
getOwnPropertyDescriptor() { xxx },
// 定义属性捕获器
defineProperty() { xxx },
// 监听属性名和 symbol捕获器
ownKeys() { xxx },
// 函数调用操作的捕获器,用于函数对象
apply() { xxx },
// new 操作符捕获器,用于函数对象
construct() { xxx }
})
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)