Vue响应式
- 组件data的数据一旦变化,立刻触发视图的更新
实现数据驱动视图的第一步
核心API -
Object.defineProperty
Object.definProperty
的缺点(Vue3.0 启用了 Proxy)
Proxy有兼容性问题
- Proxy兼容性不好,且无法polyfill
Object.defineProperty基本用法
/* 编写 */
let data = {}
let name = "zhangsan"
Object.defineProperty(data, "name", {
get: function() {
console.log('get')
return name
},
set: function() {
console.log('set')
name = newVal
}
})
/* 测试 */
console.log(data.name) // get zhangsan
data.name = "lisi" // set
用 Objec.defineProperty实现响应式
- 监听对象,监听数组
- 复杂对象,深度监听
- 几个缺点