计算属性与 methods
的区别
- 调用方式不同,函数需要加()
- 放在computed中只会执行一次
- 放在methods中调用多少次就会执行多少次
- 相对来讲放在computed效率高
计算属性与 watch
的区别
- 计算属性的应用场景是计算的内容需要依赖多个属性的情况 侦听器的应用场景是计算的内容依赖一个属性的情况
- 计算属性缓存结果时每次都会重新创建变量,而侦听器是直接计算,不会创建变量保存结果,也就意味着,数据如果会反复的发生变化,计算很多次的情况下,计算属性的开销将会更大,也就意味着这种情况不适合使用计算属性,适合使用侦听器,那么,如果一个数据反复会被使用,但是它计算依赖的内容很少发生变化的情况下,计算属性会缓存结果,就更加适合这种情况。
- computed的结果是通过return返回的,而watch不需要return。
- watch中的参数可以得到侦听属性改变的最新结果,而computed函数没有这种参数
1. 放到computed中
html
<h1>原数据:{{msg}}</h1>
<h1>计算属性后{{computed_msg}}</h1>
<h1>原数据:{{zm}}</h1>
<h1>计算属性后:{{computed_zm}}</h1>
<h1>原数据:{{msg}}</h1>
<h1>计算属性后{{computed_msg}}</h1>
<h1>原数据:{{zm}}</h1>
<h1>计算属性后:{{computed_zm}}</h1>
js
export default {
data:{
msg : "Hello chain",
zm : "nihaoya"
},
computed:{
computed_msg:function() {
// 反转字符串
return this.msg.split('').reverse().join('');
},
computed_zm:function() {
// 首字母大写,其余小写
// toUpperCase()转大写toLowerCase()转小写
return this.zm.substring(0,1).toUpperCase()+this.zm.substring(1).toLowerCase();
}
}
}
export default {
data:{
msg : "Hello chain",
zm : "nihaoya"
},
computed:{
computed_msg:function() {
// 反转字符串
return this.msg.split('').reverse().join('');
},
computed_zm:function() {
// 首字母大写,其余小写
// toUpperCase()转大写toLowerCase()转小写
return this.zm.substring(0,1).toUpperCase()+this.zm.substring(1).toLowerCase();
}
}
}
2. 放到method中
html
<h1>原数据:{{zm}}</h1>
<h1>计算属性后:{{computed_zm}}</h1>
<h1>methods后:{{methods_zm()}}</h1>
<h1>原数据:{{zm}}</h1>
<h1>计算属性后:{{computed_zm}}</h1>
<h1>methods后:{{methods_zm()}}</h1>
js
export default {
data:{
msg:"Hello chain",
zm:"nihaoya"
},
computed:{
computed_zm:function(){
return this.zm.substring(0,1).toUpperCase()+this.zm.substring(1).toLowerCase();
}
},
methods:{
method:function(){
return this.zm.substring(0,1).toUpperCase()+this.zm.substring(1).toLowerCase();
}
}
}
export default {
data:{
msg:"Hello chain",
zm:"nihaoya"
},
computed:{
computed_zm:function(){
return this.zm.substring(0,1).toUpperCase()+this.zm.substring(1).toLowerCase();
}
},
methods:{
method:function(){
return this.zm.substring(0,1).toUpperCase()+this.zm.substring(1).toLowerCase();
}
}
}
3. 应用场景:data数据访问data中另一个数据
- 使用计算属性
- 不可实时修改
js
mounted()
中完成赋值
- 不可实时修改
js
- 使用侦听属性
- 实时访问修改
js