Vue基础语法之计算属性

计算属性

设计的初衷在千减轻模板上的业务负担, 当数据链上出现复杂衍生数据时,我们更期望以一种易维护的方式去使用它。

  • 基本使用
<div id="app">
  <h2>{{firstName+lastName}}</h2>
  <h2>{{firstName}}{{lastName}}</h2>
  <h2>{{getFullName()}}</h2><!--方法-->
  <h2>{{fullName}}</h2><!--<属性-->
</div>
<script src="../Js/vue.js"></script>
<script>
  let app = new Vue({
    el: '#app',
    data: {
      firstName: '夏吕',
      lastName: '千千',
    },
    /*   computed:计算属性*/
    computed: {
      fullName: function () {
        return this.firstName + this.lastName
      }
    },
    methods: {
      getFullName() {
        return this.firstName + this.lastName
      }
    }
  })
</script>
  • 复杂操作
<div id="app">
  <h2>总价格:{{totalPrice}}</h2>

</div>
<script src="../Js/vue.js"></script>
<script>
  var app = new Vue({
    el: '#app',
    data: {
      /*数组里的 是对象*/
      book: [
        {id: 101, name: '代码大全', price: 102},
        {id: 102, name: '编程艺术', price: 89},
        {id: 103, name: '深入理解计算机原理', price: 82},
        {id: 104, name: '现代操作系统', price: 88},
      ]
    },
    computed: {
      totalPrice: function () {
        let result = 0
            for
        (let
        i = 0;
        i < this.book.length;
        i++
      )
        {
          result += this.book[i].price
        }
            return result
      }
    }

  })
</script>
  • 计算属性setter和getter(计算属性的本质)
<div id="app">
  {{fullName}}
</div>
<script src="../Js/vue.js"></script>
<script>
    var  app=new Vue({
        el:'#app',
        data:{
           firstName:'任',
          lastName:'阳峰'
        },
      computed: {
        fullName:
            {
              set:function(newValue)
              {
                const names=newValue.split(' ');
                this.firstName=names[0];
                this.lastName=name[1];
              },
              get:function () {
                return this.firstName+' '+this.lastName
              }
            }
      }

    })
</script>
  • 计算属性性能比methods高

计算属性会进行缓存,如果多次使用时,只会调用一次。

<div id="app">
  <!--函数调用四次-->
  <h2>{{getFullName()}}</h2>
  <h2>{{getFullName()}}</h2>
  <h2>{{getFullName()}}</h2>
  <h2>{{getFullName()}}</h2>
  <!--只调用一次-->
  <h2>{{fullName}}</h2>
  <h2>{{fullName}}</h2>
  <h2>{{fullName}}</h2>
  <h2>{{fullName}}</h2>
  <h2>{{fullName}}</h2>
</div>
<script src="../Js/vue.js"></script>
<script>
  var app = new Vue({
    el: '#app',
    data: {
      firstName: '任',
      lastName: '阳峰'
    },
    computed: {
      fullName: function () {
        console.log("hahahaha");
        return this.firstName + this.lastName
      }
    },
    methods:
        {
          getFullName:function () {
            console.log("hahahaha");
            return this.firstName+this.lastName;
          }
        }
  })
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值