

计算属性介绍



拼接名字案例

<!DOCTYPE html><html><head><meta charset="utf-8"><title></title><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script></head><body><div id="app"><!-- 原始拼接方式 --><p>{{fastName}} {{lastName}}</p><!-- 在模板语法中进行计算 --><p>{{fastName + " " + lastName}}</p><!-- 调用函数计算 --><p v-text="fullName2()"></p><!-- 使用计算属性计算 --><p>{{fullName1}}</p></div></body><script type="text/javascript">var app = new Vue({el: "#app",data: {fastName: "Tracy",lastName: "McGrady"},computed: {fullName1: function(){return this.fastName + " " + this.lastName}},methods: {fullName2: function(){return this.fastName + " " + this.lastName}}})</script></html>


运行结果




购物车价格统计案例

<!DOCTYPE html><html><head><meta charset="utf-8"><title></title><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script></head><body><div id="app"><p>{{totalPrice}}</p></div></body><script type="text/javascript">var app = new Vue({el: "#app",data: {bookes: [{id: 100,name: 'Unix编程艺术',price: 119},{id: 200,name: 'Java编程思想',price: 105},{id: 300,name: '高并发编程',price: 98},{id: 400,name: 'Spring5',price: 99},]},computed: {totalPrice: function(){let result = 0;// 普通循环/* for(let i = 0;i < this.bookes.length;i++){result += this.bookes[i].price;} */// 增强for循环,i为索引/* for(let i in this.bookes){result += this.bookes[i].price;} */// ES6新增for循环直接获取对象for(let book of this.bookes){result += book.price}return result;}}})</script></html>
运行结果就是在浏览器上显示出来商品的价格

以上两个案例供给各位练习和体验计算属性的用法,他的原理是什么?怎么实现的?他和我自己定义函数调用有什么区别,我们在下边为大家一一道来



getter和setter方法


给出原始的getter和setter方法,就问你周到不。
<html><head><meta charset="utf-8"><title></title><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script></head><body><div id="app"><p>{{fullName}}</p></div></body><script type="text/javascript">var app = new Vue({el: "#app",data: {firstName: "Tracy",lastName: "McGrady"},// 计算属性computed: {// 计算对象fullName:{// 设置数据set: function(){console.log('---');},// 获取数据get: function(){return this.firstName + " " + this.lastName;}}}})</script></html>



计算属性缓存

<!DOCTYPE html><html><head><meta charset="utf-8"><title></title><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script></head><body><div id="app"><!-- 原始方式,该方式面对数据计算时比较繁琐,不推荐使用 --><p>名字:{{name}} 工作:{{job}}</p><!-- methods方式,每获取一次数据就调用一次函数 --><p>{{getInfo1()}}</p><p>{{getInfo1()}}</p><p>{{getInfo1()}}</p><p>{{getInfo1()}}</p><!-- computed方式,当数据没有发生变化时,仅调用一次,会将数据进行缓存 --><p>{{getInfo2}}</p><p>{{getInfo2}}</p><p>{{getInfo2}}</p><p>{{getInfo2}}</p><p>{{getInfo2}}</p></div></body><script type="text/javascript">var app = new Vue({el: "#app",data: {name: "麦迪",job: "NBA球星"},methods: {getInfo1: function(){console.log("methods");return "名字:" + this.name + "工作:" + this.job;}},computed: {getInfo2: function(){console.log("computed");return "名字:" + this.name + "工作:" + this.job;}}})</script></html>



1、methods和computed看起来都能实现我们的功能
2、计算属性会进行缓存,如果多次使用时,计算属性只会调用一次



文章转载自酉时Coding课堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




