Vue 中数据的代理

本文探讨了Vue框架中数据代理的概念,从vue2的基础出发,介绍了在vue3中如何利用ES6的Proxy实现相同的数据响应式效果。尽管作者未深入研究vue3的源码,但仍尝试通过Proxy来模拟vue2的数据绑定。文章欢迎读者指出可能存在的错误和不足。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue2

let obj = {
	userNmae: '小红',
	pass: '1234'
}

let hijack = {}

for (let i in obj) {
	Object.defineProperty(hijack, i, {
		get() {
			return obj[i]
		}

		set(newValue){
			obj[i] = newValue
		}
	})
}

hijack.userName = '小蓝'
console.log(hijack.userName, hijack.pass) // 小蓝, 1234

vue3

作者知道 vue3 是 Proxy 实现的,虽然并没有看过源码,但用 es6 中的 Proxy 实现上述 vue2 中的效果,还是可以的。

let proxy = new Proxy(obj, {
	// target: 目标对象, propKey: 键名, receiver: proxy实例本身(可选)
	get(target, propKey, receiver){
		return target[propKey]
	},
	
	// value: 要赋的值
	set(target, propKey, value, receiver){
		target[propKey] = value
	}
})

proxy.userName = '小绿'
console.log(proxy.userName, proxy.pass) // 小绿, 1234

作者水平有限,如有错误和不足,欢迎指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值