Vue学习——数据代理

本文详细介绍了JavaScript的Object.defineProperty方法,包括基础配置项、getter和setter的使用。此外,还探讨了数据代理的概念,通过示例展示了如何通过代理对象操作另一对象的属性。在Vue框架中,数据代理是实现响应式数据绑定的关键,它使得操作data中的属性更加便捷。文章阐述了Vue中数据代理的基本原理和好处。
摘要由CSDN通过智能技术生成

一、Object.defineProperty方法

Object.defineProperty用来给对象定义属性,用这个方法定义的属性比较灵活。

1. Object.defineProperty的基础配置项

let per = {
  name: 'rj',
  country: '中国'
}

// 使用Object.defineProperty方法给per对象添加一个属性
Object.defineProperty(per,'age',{
  value: '18',  //配置新增属性的值
  enumerable: true, //控制属性是否可以被枚举,默认为false
  writable: true, //控制属性书否可以被修改,默认为false
  configurable: true  //控制属性是否可以被删除
})

2. getter和setter

  • 当属性被访问时,getter就会被调用
  • 当属性被修改时,setter就会被调用
let number = 18
let per = {
  name: 'rj',
  country: '中国'
}

// 使用Object.defineProperty方法给per对象添加一个属性
Object.defineProperty(per, 'age', {
  //可简写为 get(){}
  get: function () {
    console.log('有人读取age了~');
    return number
  },
  //有人修改age属性时,setter会被调用
  set(value){
    console.log('有人修改age了!')
    number = value
  }
})

二、数据代理

1. 什么是数据代理

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

let obj = {x:100}
let obj2 = {y:200}

// 通过obj2来操作obj的x属性
Object.defineProperty(obj2,'x',{
  get(){
    return obj.x
  },
  set(value){
    obj.x = value
  }
})

三、Vue中的数据代理

  1. Vue中的数据代理:通过vm来代理data中属性的操作
  2. Vue中数据代理的好处:更加方便的操作data中的数据
  3. 基本原理:
    通过Object.defineProperty()方法将data中的属性添加到vm身上。
    为每个添加到vm身上的属性指定getter和setter。
    在getter和setter内部操作data的属性。
    图来自尚硅谷课程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值