1、什么是计算属性

某些情况我们需要对一些数据进行转化后再显示,或者需要将多个数据结合起来进行显示。

2、计算属性的几种写法

    <h2>{{fitstName}} {{lastName}}</h2>
    <h2>{{fitstName + ' '+lastName}}</h2>
    <h2>{{getFullname()}}</h2>
    <h2>{{Fullname}}</h2>
    <h2>总价格:{{totalPrice}}</h2>

3、计算属性的缓存(methods 和 computed)的区别。

computed 方法调用的时候如果数据没有发生变化,只会执行一次函数,methods 方法,每调用一次方法,都会执行一次函数。

*******完整代码******

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="./js/vue.js"></script>
</head>
<div id="app">
    <h2>{{fitstName}} {{lastName}}</h2>
    <h2>{{fitstName + ' '+lastName}}</h2>
    <h2>{{getFullname()}}</h2>
    <h2>{{Fullname}}</h2>
    <h2>{{Fullname}}</h2>
    <h2>{{Fullname}}</h2>
    <h2>{{Fullname}}</h2>
    <h2>{{getTotalFullname()}}</h2>
    <h2>{{getTotalFullname()}}</h2>
    <h2>{{getTotalFullname()}}</h2>
    <h2>{{getTotalFullname()}}</h2>
    <h2>总价格:{{totalPrice}}</h2>
</div>

<body>
    <script>
        let vm = new Vue({
            el: '#app',
            data: () => ({
                fitstName: 'Lucky',
                lastName: 'Boder',

                books: [
                    { id: 1, bookName: '斗罗大陆', price: 100 },
                    { id: 2, bookName: '武动乾坤', price: 98 },
                    { id: 3, bookName: '凡人修仙传', price: 78 },
                    { id: 4, bookName: '完美世界', price: 105 }
                ]
            }),
            computed: {
                Fullname: function () {
                    console.log('Fullname')
                    return this.fitstName + ' ' + this.lastName
                },
                totalPrice: function () {
                    let result = 0
                    for (let i = 0; i < this.books.length; i++) {
                        result += this.books[i].price
                    }
                    return result
                }
            },
            methods: {
                getFullname: function () {
                    return this.fitstName + ' ' + this.lastName
                },
                getTotalFullname: function () {
                    console.log('getTotalFullname')
                    return this.fitstName + ' ' + this.lastName
                }
            }
        })
    </script>
</body>

</html>
01-23 01:06