返回
跟着小洪学Object响应式原理,从入门到吊打面试官
前端
2024-02-03 08:18:31
响应式原理概述
响应式原理,又称数据绑定原理,是一种将数据状态与UI视图绑定在一起的技术。当数据状态发生变化时,UI视图也会随之更新。响应式原理是前端开发中非常重要的知识点,也是面试官非常喜欢问到的问题之一。
Object响应式原理
Object响应式原理是响应式原理最基础的一种实现方式。Object响应式原理的核心思想是,在Object对象上添加一个getter和一个setter方法,当对象的属性被访问时,会触发getter方法,当对象的属性被修改时,会触发setter方法。在setter方法中,我们可以做一些额外的操作,比如通知UI视图更新。
const obj = {
name: '小明',
age: 18
}
Object.defineProperty(obj, 'name', {
get() {
return this._name
},
set(newValue) {
this._name = newValue
// 通知UI视图更新
}
})
obj.name = '小红'
console.log(obj.name) // '小红'
Vue2响应式原理
Vue2的响应式原理是基于Object响应式原理的。Vue2在Object响应式原理的基础上,添加了依赖收集和更新机制。依赖收集是指,当一个组件的模板中使用了某个数据,那么这个组件就会被收集为该数据的依赖。当数据的变化时,会通知依赖该数据的组件更新。
const app = new Vue({
data() {
return {
name: '小明',
age: 18
}
},
template: `
<div>
<p>{{ name }}</p>
<p>{{ age }}</p>
</div>
`
})
app.$mount('#app')
app.name = '小红'
console.log(app.name) // '小红'
Vue3响应式原理
Vue3的响应式原理与Vue2的响应式原理基本相同,但也有两点不同。
- Proxy代理对象: Vue3使用Proxy代理对象来实现响应式。Proxy代理对象可以拦截对对象的访问和修改,从而实现响应式。
- 懒惰求值: Vue3采用懒惰求值的方式来收集依赖。只有当组件的模板被渲染时,才会收集依赖。
总结
响应式原理是前端开发中非常重要的知识点。本文从Object响应式原理讲起,一步一步带你理解Vue2和Vue3是如何实现响应式的。看完本文,你将对响应式原理有一个深入的了解,并且能够轻松回答面试官的各种问题。