Vue基础(3)_数据代理

回顾js事件

Object.defineProperty()方法
Object.defineProperty()静态方法会直接在一个对象上定义一个新属性,或修改其现有属性,并返回此对象。

语法:
Object.defineProperty(给哪个对象添加属性,‘添加的属性名’,{配置项})
可选属性值:
enumerable:true   控制属性是否可以枚举,默认值是false。
writable:true         控制属性是否可以被修改,默认值是false。
configurable:true  控制属性是否可以被删除,默认值是false。

Object.keys()方法
传入对象最为参数,返回传入对象的属性名。

简单的数据代理示例:

    <script>
        let obj = {x:100};
        let obj2 = {y:200};
        Object.defineProperty(obj2, 'x', {
            get(){
                console.log("获取该数值");
                return obj.x;
            },
            set(value){
                console.log("修改该数值");
                obj.x = value;
            }
        })
    </script>

数据代理

定义:通过一个对象代理对另一个对象中属性的操作。

Vue中的数据代理:通过vm对象来代理data对象中属性的操作(读/写)。
Vue中数据代理的好处:更加方便的操作data中的数据。(没有数据代理:_data.name,_data.address。有了数据代理:name,address)

基本原理:
1、通过Object.defineProperty()把data对象中所有属性添加到vm上。
2、为每一个添加到vm上的属性,都指定一个getter/setter。
3、在getter/setter内部去操作(读/写)data中对应的属性。

数据代理图示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值