最近一直在项目开发中使用Vue.js,对于Vuejs中的computed、methods、watch的理解一直不是很透彻,通过多方查资料作demo,今天经过这篇文章给你们介绍下关于vue中计算属性(computed)、methods和watched之间的区别:html
首先要说,methods,watch和computed都是以函数为基础的,但各自却都不一样; vue
1.watch和computed都是以Vue的依赖追踪机制为基础的,它们都试图处理这样一件事情:当某一个数据(称它为依赖数据)发生变化的时候,全部依赖这个数据的“相关”数据“自动”发生变化,也就是自动调用相关的函数去实现数据的变更。函数
2.对methods:methods里面是用来定义函数的,很显然,它须要手动调用才能执行。
而不像watch和computed那样,“自动执行”预先定义的函数this
【总结】:methods里面定义的函数,是须要主动调用的,而和watch和computed相关的函数,会自动调用,完成咱们但愿完成的做用code
从性质上看:htm
1.methods里面定义的是函数,methods是方法,只要调用它,函数就会执行;对象
2.computed是计算属性,事实上和和data对象里的数据属性是同一类的(使用上),开发
<p>原始数据:{{msg}}</p> <p>改变后的数据:{{changemsg}}</p> var vm=new Vue({ el:"#example", data:{ msg:"hello", }, computed:{ //计算属性 changemsg:function(){ return this.msg.split("").reverse().join(""); }, }
你在取用的时候,用this.changemsg去取用,就和取data同样(不要当成函数调用!!)it
computed属性 VS watched 属性:io
watch和computed各自处理的数据关系场景不一样
1.watch擅长处理的场景:一个数据影响多个数据
2.computed擅长处理的场景:一个数据受多个数据影响
watched属性:代码更易于理解,它指定监测的值是谁,而后相应的改变其余的值。
var vm = new Vue({ el: '#demo', data: { firstName: 'Foo', lastName: 'Bar', fullName: 'Foo Bar' }, watch: { firstName: function (val) { this.fullName = val + ' ' + this.lastName }, lastName: function (val) { this.fullName = this.firstName + ' ' + val } } })
computed属性:
var vm = new Vue({ el: '#demo', data: { firstName: 'Foo', lastName: 'Bar' }, computed: { fullName: function () { return this.firstName + ' ' + this.lastName } } })