玩命加载中 . . .

Vue中Watch和Computed的区别


Vue中methods和computed的区别

1.用法不同

  • methods的用法:
<div id="root"> 
	<input type="text" v-model="firstname"><br>
	<input type="text" v-model="lastname"><br>
    <!--methods内的方法调用时必须加()-->
	<span>{{fullName()}}</span>
</div>
<script type="text/javascript">
	new Vue({
		el:'#root',
		data:{
			firstName:'张',
			lastName: '三'
		},
		methods:{
			fullName(){
				return this.firstName + '-' + this.lastName
			}
		}
	})
</script>
  • computed用法:
<div id="root">
	<input type="text" v-model="firstName"><br>
	<input type="text" v-model="lastName"> <br>
    <!--computed内的方法调用时不需加(),当成属性使用即可-->
	<span>{{fullName}}</span>
</div>
<script type="text/javascript">
	Vue.config.productionTip = false;
	const vm = new Vue({
		el:"#root",
		data:{
			firstName:'张',
			lastName:'三'
		},
		computed:{
			fullName(){
				return this.firstName+'-'+ this.lastName
			}
		}
	});
</script>

2.作用不同

  • computed数据是响应式的,如果数据层的值变了,computed就会实时更新到视图层上。

3.原理不同

  • computed底层借助了 Object.defineproperty()方法提供的getter和setter

  • computed内部有缓存机制,只有其引用的响应式属性发生改变时才会重新计算,而methods里的函数在每次调用时都要执行。

  • computed中的成员可以只定义一个函数作为只读属性,也可以定义get/set变成可读写属性,这点是methods中的成员做不到的
  • 若计算属性要修改,需调用set函数去响应修改

文章作者: D1s3nchanted
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 D1s3nchanted !
评论
  目录