Vue中的数据代理

什么是数据代理:

通过一个对象代理对另一个对象中属性的操作(读/写)

需求:

现在有一个person对象,有namesex两种属性,添加一个age属性,并且使这个age属性与一个number的变量去关联。

这时候就使用Objectdefineproperty方法

<body>
    <!-- 容器 -->
    <div id="root">

    </div>

    <script type="text/javascript">
        let number = 19
        let person = {
                name: "张三",
                sex: "男"
            }

        /* 给对象添加一个属性。这种方法是不可枚举不可遍历的。 
        如果加上一个属性就变成了可以列举的可遍历的。*/
        Object.defineProperty(person, "age", {
            //这个属性的值
            //value: 18,
            //是否可列举,默认为false
            enumerable:true,
            //是否可修改,默认值是false
            //writable:true,
            //是否可以删除,默认值是false
            configurable:true,

            /* 当有人读取person的age属性时,get函数就会被调用,且返回值就是age的值
            这时候这个属性不能有value属性和writable属性。
            */
            get(){
                return number;
            },
            /* 
            当有人修改这个属性值时,setter函数就会被调用。
             */
            set(value){
                number = value
            },
        })
        //打印对象。
        console.log(person)
        /* for in 既能遍历数组也能遍历对象。
        在此处遍历person对象不会显示出person的age属性 */
        for (const key in person) {
            console.log("@"+person[key])
        }
    </script>

</body>

数据代理在Vue中的使用:

<body>
    <!-- 什么是数据代理:通过一个对象代理对另一个对象中属性的操作(读/写) -->
    <div id="root">
        <h2>学校:{{name}}</h2>
        <h2>地址:{{address}}</h2>
    </div>
    <script type="text/javascript">
        const vm = new Vue({
            el:'#root',
            //这个data存在于vm._data中
            data () {
                return {
                    name:"清华大学",
                    address:"北京",
                }
            }
        })
    </script>
</body>

ps:Vue实例中的_data实际上Vue将data中的数据放到了vm中一份,并且放在了vm._data中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YonChao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值