<div id="app">
    <div>{{fullName}}</div>
</div>
<script>
    var vm = new Vue({
        el: "#app",
        data: {
            name: "<h1>Dell</h1>",
            firstName: "sheng",
            lastName: "jun yong",
            age: 28
        },
        // 方式一:
        // 调用一次,执行一次,data数据更新页面重新渲染,该方法又会被调用,性能不佳
        methods: {
            // fullName: function(){
            //     return this.firstName + this.lastName
            // }
        },
        // 方式二
        // 计算属性有缓存,第一次调用执行一次,只要与其相关属性不变,多次调用只会执行一次方法,节约性能
        computed: {
            // 调用{{fullName}}无需括号,fullName相当于一个属性this.fullName,该方法的返回值就是属性值
            fullName() {
                return this.firstName + this.lastName
            }
        },
        // 方式三
        watch: {
            // 监听firstName数据,当firstName变化,该方法被回调
            firstName(){
                console.log("监听firstName")
                this.fullName = this.firstName + this.lastName
            },
            // 监听lastName数据,当lastName变化,该方法被回调
            lastName(){
                console.log("监听lastName")
                this.fullName = this.firstName + this.lastName
            }
        }
    })
</script>
原文:https://www.cnblogs.com/shengjunyong/p/12150222.html