computed属性跟methods方法的区别
我们可以将同一个函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实完全相同的。
然而,不同的是计算 属性是基于他们的依赖进行缓存的,只在相关依赖发生改变时它们才会重新求职。
这就意味着只要num1还没有发生改变,多次访问num1计算属性会立即返回之前的计算结果,而不必再次执行函数。
计算属性computed初次执行函数后,值会存储到缓存中,依赖项未改变,不会再执行函数而是从缓存中立即取出;
methods中的函数每次调用都会执行一次
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="root">
<div>computed:{{num1}}</div>
<div>computed:{{num1}}</div>
<div>methods:{{num2()}}</div>
<div>methods:{{num2()}}</div>
<button @click="one++">one++</button>
<button @click="num1++">num1++</button>
</div>
<!-- <script src="./vue.js"></script> -->
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.3.4/vue.js"></script>
<script>
new Vue({
el:"#root",
data:{
one:13,
two:14
},
computed:{
num1:{
get(){
console.log("computed"); // 只输出了一次
return this.one + this.two
},
set(value){ //只有当 num1 被改变的时候,才会调用,value 就是改变后的值
console.log(value,"value");
}
}
},
methods: {
num2(){
console.log("methods"); // 输出了两次
return this.one + this.two
}
},
})
</script>
</body>
</html>