小生愛

        <div id="app">{{message}}</div>

        <script type="text/javascript">

                let vm = new Vue({
                    el : '#app',
                    data : { message : {name:'小花'} }
                });

                /**
                    *   $watch(表达式, callback(新参数, 旧参数), [options]) 监听Vue实例的一个表达式
                    *   $watch 返回一个取消函数 用来停止触发回调
                    *   deep : true 普通监听不能监听到对象某一个参数值的变化 (数组变动不需要添加该参数)
                    *   注 : 在修改(不是替换)对象或数组时 旧值将与新值相同 因为它们索引同一个对象/数组 Vue不会保留修改之前值的副本
                */
                let unwatch = vm.$watch(
                    'message', 
                    // callback(新值, 旧值)
                    (newVal, oldVal) => c('name =', newVal.name, oldVal.name),
                    // deep : true 监听对象的属性变化
                    {deep : true}
                );

                // 如果调用$watch的回调则$watch不再监听变化
                // unwatch();

                // $data : 表示data对象里的所有属性
                // $watch监听对象的变化 如果是替换 则记录旧值 输出 name = 小蓝 小花
                vm.$data.message = {name:'小蓝'};
                // $watch监听对象的变化 如果是修改 则不记录旧值 输出 name = 小蓝 小蓝
                vm.$data.message.name = '小蓝';

        </script>
{{message}}