Vue 基础面试题, 在 Vue 中,如果变量名以 _ 或 $ 开头,会有什么问题?如何访问到这些值?
Vue 基础面试题, 在 Vue 中,如果变量名以 _ 或 $ 开头,会有什么问题?如何访问到这些值?
QA
Step 1
Q:: 在 Vue 中,如果变量名以 _ 或 $ 开头,会有什么问题?如何访问到这些值?
A:: 在 Vue 中,变量名以 _ 或 $ 开头通常是约定俗成的惯例,用来表示该变量或属性是私有的或保留给 Vue 内部使用的。Vue 并不会强制执行这个约定,但为了避免和 Vue 内部属性发生冲突,开发者通常会避免在组件实例中使用这些前缀的变量。要访问这些变量,直接通过 this._variableName 或 this.$variableName 即可。需要注意的是,尽量不要修改这些带有 $ 前缀的变量,因为它们通常用于 Vue 的内部机制,比如 $el, $refs,
$emit 等。
Step 2
Q:: Vue 中的响应式原理是如何实现的?
A:: Vue 中的响应式原理是通过数据劫持(data hijacking)和观察者模式(observer pattern)实现的。Vue 在初始化时,通过 Object.defineProperty 方法将每个数据属性转为 getter 和 setter,这样当数据变化时,可以触发依赖更新。Vue 还会为每个响应式对象创建一个依赖(Dep)实例,当数据被访问时,记录依赖关系,而当数据变化时,通知所有依赖进行更新。Vue 3.0
则使用了 Proxy 来实现响应式,这种方式更为高效和灵活。
Step 3
Q:: Vue 中的 computed 和 watch 有什么区别?
A:: computed 和 watch 都用于监听数据的变化并作出响应,但它们的使用场景不同。computed 是计算属性,它会根据依赖的数据进行缓存,只有当依赖的数据变化时,computed 属性才会重新计算,适用于依赖多个数据源并且需要对结果进行缓存的场景。watch 则是侦听器,用于在数据变化时执行特定的回调函数,适用于监听某个数据的变化并执行异步或开销较大的操作。