VUE数据劫持代理(Object.defineProperty())

本文通过分析Vue.js中数据劫持的实现方式,重点探讨了Object.defineProperty()在数据响应化过程中的关键作用。结合MDN的相关解释,详细解释了如何使用该方法来实现对象属性的访问和修改控制。
摘要由CSDN通过智能技术生成

MDN关于Object.defineProperty


    //模拟vue中的data
    let data = {
        name: "aaa",
        age: 22
    }
    // 模拟组件实例
    let _this = {};
    //使用 Object.defineProperty

    for (let item in data) {
        // console.log(item, data[item]);
        Object.defineProperty(_this, item, {
            //get用来获取扩展属性的值,当获取该属性的值是使用get方法
            get() {
                console.log('调用get()');
                return data[item]
            },
            //监视扩展属性,只要一修改就调用
            set(newValue) {
                console.log('调用了set()', newValue);
                data[item] = newValue;
            }
        })

    }
    console.log(_this);
    //通过Object.defineProperty的get方法修改的属性,不能使用 对象.属性 修改,但是会出发set()方法
    _this.age = 55// 调用了set() 55

    // console.log(_this.name);

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值