Vue10-10 vue中的数据代理解析

Vue数据代理:vm下_data代理Vue实例中data(个人理解,课程中认为是vm代理Vue实例)

实现的重点:Object.defineProperty(obj,key,val)

Obj.defineProperty作用:

  js中的两个对象,如果想要在其中一个中监测另一个对象的数据,可以使用Obj.defineProperty

  1. 一般用来给一个对象中增加键值对儿数据(默认不会被枚举,不会被修改,不会被删除..., 需要增加对应的属性来实现枚举,修改删除等)

  2. 高级属性: get(){}和set(newValue){},getter用来在传入的obj被使用时调用;setter用来在传入的obj发生修改时调用。

1.  当你创建Vue实例,在data中添加数据,并赋值给vm

    <script type="text/javascript">
        const vm = new Vue({
            el: '#root',
            data() {
                return {
                    student:{
                        name: "赵钱孙李",
                        address: '周家庄',
                    },
                }
            },
        })
    </script>

2.  此时,

  1. Vue会给data下所有数据使用getter和setter来监测,注意:getter和setter会对data中的一层层的数据对象进行监测

  2. Vue会使用Object.defineProperty()将Vue中的data对象代理到vm对象中的_data对象中,在_data中,使用getter和setter来监测data对象中的数据

  

 

posted @ 2022-07-20 15:53  黑无常  阅读(82)  评论(0)    收藏  举报