简答
vue.js通过数据劫持结合发布者-订阅者模式,通过Object.defineProperty()劫持各个属性的setter和getter,在数据变动时发布消息给订阅者,触发相应的监听回调函数
具体流程
*每个组件都有相应的watch实例对象,它会在组件渲染的过程中把属性记录为依赖
之后,当依赖项的setter被调用时,会通知watch重新计算,从而使其关联组件得以更新
双向绑定例子
<div id="app">
<input v-model="msg">
<p>{{msg}}</p>
</div>
<script>
new Vue({
el: "#app",
data: {
msg: "hello"
}
});
</script>
双向绑定原理分析
代码
new Vue({
el: "#app",
data: {
obj: {
num: 5
}
},
created: function() {
console.log(this.obj);
}
});
结果

分析
vue通过ObjectdefineProperty()实现数据劫持,这是属性num多出两个对应的set方法和get方法的原因
本文深入探讨Vue.js中双向绑定的工作机制,通过数据劫持和发布-订阅者模式,利用Object.defineProperty()监听数据变化,并触发视图更新。详细解释了从属性记录依赖到setter触发更新的具体流程。
3298

被折叠的 条评论
为什么被折叠?



