计算属性 computed
computed
(多个值变化,影响到一个结果) 属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。他是函数主要当作属性来使用,逻辑简单。
computed是属性调用,而methods是函数调用
computed带有缓存功能,而methods不是
computed可以监控对象,而methods不是
computed:{//前面的数值变化影响到结果---》get
'fullname':function(){
return this.firstname+this.lastname;
}
fullname(){
return this.firstname+this.lastname;
}
}
fullname:{ //双向数值修改(前面变化影响到后面,后面变化影响到前面) get+set
get:function(){
return this.firstname+"-"+this.lastname;
},
set:function(newval){
//console.log(newval);
var arr=newval.split('-');
//console.log(arr);
this.firstname=arr[0];
this.lastname=arr[1];
}
}
监视属性 watch
watch
(一个值变化,影响到多个结果改变)一个对象,键是需要观察的表达式,值是对应回调函数。主要用来监听某些特定数据的变化(watch监控路由对象‘$route’),从而进行某些具体的业务逻辑操作;可以看作是computed
和methods
的结合体;
watch可以监控对象,而methods不是
Watch:{
'obj':{
handler(newval){
console.log(newval);
},
deep:true,
immediate: true
}
}
watch和computed均可以监控程序员想要监控的对象,
当这些对象发生改变之后,可以触发回调函数做一些逻辑处理
watch监控自身属性变化(重新编译,性能差)
watch监控路由对象(一个值变化,影响到多个结果改变)
数据变化时来执行异步操作,这时watch是非常有用的。
计算属性computed的特点(多个值变化,影响到一个结果)
计算属性会依赖于他使用的data中的属性,只要是依赖的属性值有改变,则自动重新调用一下计算属性;如果他所依赖的这些属性值没有发生改变,那么计算属性的值是从缓存中来的,而不是重新编译,那么性能要高一些,所以vue中尽可能使用computed替代watch