我们都知道在vue示例中,data数据发生改变时,视图层也会发生改变,匹配更新为最新的值。
也正是因为这个系统,让我们可以脱离界面的束缚,只需要操作数据。往下看⬇⬇⬇⬇⬇
Object.defineProperty
-
这个方法,是 Vue 响应式系统的精髓,骨髓,脑髓
-
使用 Object.defineProperty 可以为对象中的每一个属性,设置 get 和 set 方法
那么 get 和 set 方法有什么用?
-
get 值是一个函数,当属性被访问时,会触发 get 函数
-
set 值同样是一个函数,当属性被赋值时,会触发 set 函数
举个例子
var obj={
name:"阿峰"
}
Object.defineProperty(obj,"name",{
get(){
console.log("get 被触发")
},
set(val){
console.log("set 被触发")
}
})
当我访问 obj.name 时,会打印 ' get 被触发
'当我为 obj.name 赋值时,obj.name = 5,会打印 ' set 被触发 '
以上面的 Vue 实例 为例
当 name 改变的时候,name 会遍历自己的 依赖收集器 subs,逐个通知 watcher,让 watcher 完成更新
这里 name 会通知 页面A,页面A 重新读取新的 name ,然后完成渲染
总结一下
- Object.defineProperty - get ,用于 依赖收集
- Object.defineProperty - set,用于 依赖更新
- 依赖收集器 subs 保存的依赖是 watcher
- watcher 可用于 进行视图更新
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!