https://www.yuque.com/u640022/ootqox/lhsqnu
这个是看vue官方教程写的笔记 Vue Mastery。只针对vue3,是比较好的、更全的。
什么是数据响应式?
比如一段js代码:
<div class="total">
total:1
</div>
const total = 1
当我们用js修改total的时候,div里面的total的值,并不会改变。
只能在修改之后,用js去获取dom去修改。
但是,如果有了数据响应式,那当我们修改total的时候,div里面的total是会随着修改而改变的。
Vue2实现数据响应式的方式是使用Object.defineProperty对数据进行劫持
var obj = {}
var age
Object.defineProperty(obj, 'age', {
get: function(){
console.log('get age...')
return age
},
set: function(val){
console.log('set age...')
age = val
}
})
obj.age = 100 // 'set age...'
console.log(obj.age) // 'get age...', 100
上面的代码的getter和setter,其实和我们平时直接读取或修改数据没什么区别,差异就是getter和setter是一个函数,我们可以在这个函数里面进行拦截并做一些相应的行为(比如 set total以后,修改dom)