1、vue中计算属性和方法的区别
- 计算属性是:computed本质是方法,使用时可以像属性一样使用,当操作的值没有发生改变时,会使用缓存,当值发生改变,才会改变。提高速度(当遍历大量数组和大量计算时使用,因为可以得到缓存;当有复杂的逻辑时,应当使用计算属性)
- 方法是:methods。绑定事件调用,并且需要加小括号,不会使用缓存。
2、Vue脚手架项目中data为什么是一个函数
- vue中组件是用来复用的,为了防止data复用,将其定义为函数
- vue中组件中的data数据都应该是相互隔离,互不影响的,组件每复用一次,data数据就应该被复制一次,之后,当某一处复用的地方组件内data数据被改变时,其他复用地方的dtat数据不受影响,就需要通过dtat函数返回一个对象作为组件的状态。
- 当我们将组件中的data写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的data,拥有自己的作用域,类似于给每个组件实例创建一个私有的数据空间,让各个组件实例维护各自的数据。
3、VueComponent和Vue对象的关系
每个函数function都有一个prototype属性,即显式原型(属性)。它默认指向Object空对象,每个实例对象都有一个__proto__属性,即称隐式原型(属性)。
VueComponent把原本指向Object的原型对象改到指向Vue原型对象,即VueComponent.prototype.proto === Vue.prototype,目的是为了组件实例对象(vc)可以访问到Vue原型上的属性和方法。
4、vue父组件怎样监听子组件的生命周期?
通过$ emit实现
其实就是在父组件上封装了一个v-on的事件用来监听子组件的事件,只不过事件名和钩子函数同名,当子组件发布时,即执行this.$emit(‘钩子函数created/mounted’,参数)时,在父组件则可以监听到, 然后执行回调