vue2.x 的响应式原理—vue源码探究记录001

function observe(obj, cb) {
			    Object.keys(obj).forEach((key) => defineReactive(obj, key, obj[key] , cb))
			}
			
			function defineReactive (obj, key, val, cb) {
			    Object.defineProperty(obj, key, {
			        enumerable: true,
			        configurable: true,
			        get: ()=>{
			            /*....依赖收集等....*/
			            /*Github:https://github.com/answershuto*/
			            return val
			        },
			        set:newVal=> {
			            val = newVal;
			            /*订阅者收到消息的回调*/
						cb()
			        }
			    })
			}
			
			let cb= function(){
				console.log("属性更新了")
			}
			
		  let data = {
			  Value:99
		  }	
		  
		  observe(data,cb)
		
		  data.Value = 199
		
			
		  console.log(data)	
		//输出: 属性更新了  { Value:199}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有志青年(top)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值