vue 计算属性和data_Vue.js 计算属性

computed vs method:

在vue.js中,有methods和computed两种方式来动态当作方法来用的。

1.首先最明显的不同 就是调用的时候,methods要加上()

2.我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。

而使用 methods ,在重新渲染的时候,函数总会重新调用执行。

为了方便理解,先上一段源码:

title

{{now}}

{{now}}

{{now}}

{{now}}


{{now()}}

{{now()}}

{{now()}}

{{now()}}

var myVue = new Vue({

el: ".test",

computed: {

now: function() {

var yanshi = 0;

for(var o = 0; o < 2000; o++) { //延时

for(var q = 0; q < 2000; q++) {

yanshi++;

}

}

return Date.now()

}

}

});

var vue2 = new Vue({

el: '.test2',

methods: {

now: function() {

var yanshi = 0;

for(var o = 0; o < 2000; o++) {

for(var q = 0; q < 2000; q++) {

yanshi++;

}

}

return Date.now()

}

}

})

结果如下:

运行结果如上,可以看出computed计算属性的话,每次进入页面将一直沿用第一次的信息,不会再触发now,这就是依赖缓存。(有延时的情况下 多次输出时间相同)。

那什么是相关依赖发生改变时才会重新取值呢 比方说 reversedMessage function() 计算属性中调用了 message 变量。

就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必再次执行函数。

而methods是实时的,在重新渲染时,函数总会重新调用执行,不会缓存,(多次输出时间不同)

可以说使用 computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。

computed 属性默认只有 getter ,不过在需要时你也可以提供一个 setter :所以其实computed也是可以传参的。

tjock

tjock

lxi***tang@gmail.com1年前 (2019-09-14)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值