Vue数据双向绑定原理(vue2向vue3的过渡)

众所周知,Vue的两大重要概念:

数据驱动
组件系统

接下来我们浅析数据双向绑定的原理
一、vue2
1、认识defineProperty

vue2中的双向绑定是基于defineProperty的get操作与set操作,那么我们简单认识下defineProperty,
作用: 就是直接在一个对象上定义一个新属性,或者修改一个已经存在的属性。
那么我们先来看下Object.getOwnPropertyDescriptor(),有定义方法就会有获取方法,对这就是与defineProperty相对的方法,它可以获取属性值。

var a ={
b:1,
c:2
}
console.log(Object.getOwnPropertyDescriptor(a,‘b’)); //查看获取b属性
在这里插入图片描述

这就是打印出来的结果,configurable的意思是可便利,enumerable的意思是可枚举,writable的意思是可写。
2、使用defineProperty实现简单的私有变量

知道了属性内部的属性值,我们可以使用defineProperty来实现一个私有变量。

var a ={
b:1,
c:2
}
Object.defineProperty(a,‘b’,{
writable:false //不可写
})
console.log(Object.getOwnPropertyDescriptor(a,‘b’)); //查看获取b属性
在这里插入图片描述

发现,改变不了a.b的值。

另外,还可以使用一个很快捷的方法实现私有变量

var a ={
b:1,
c:2
}
Object.freeze(a,‘b’); //冻结,可理解为变为私有属性
// Object.seal(a,‘b’); //configurable置为false
console.log(Object.getOwnPropertyDescriptor(a,‘b’)); //查看获取b属性

更多请见:http://www.mark-to-win.com/tutorial/50781.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值