当前位置: 首页 > wzjs >正文

聊城网站制作广州 海珠 建网站

聊城网站制作,广州 海珠 建网站,网站建设试题,烟台市建设局网站前言:数据代理和vue中的数据代理 1.Object.defineProperty(person,‘age’,{value:xx}) 特征1:不可枚举性 name和sex是深色的,代表可以被枚举(遍历),age是浅色的,代表不能被枚举 将enumerabl…

前言:数据代理和vue中的数据代理

1.Object.defineProperty(person,‘age’,{value:xx})

特征1:不可枚举性

name和sex是深色的,代表可以被枚举(遍历),age是浅色的,代表不能被枚举

将enumerable设置成为true,就可以进行枚举,console.log(Object.keys(person)),可以看到列表key

特征2:修改值

将writable设置为true,可以进行修改值。

特征3:删除值

将configurable设置为true,控制属性是否可以被删除,默认值是false

2.业务需求,如何将nubmer的值和person的age一样

如果用let person这种写法的话,let person ={  name:'xiaof',sex:'女',age:number}

number的值改变了,但是person的值没有改变。因为代码是顺序执行的。

如果想要实现这个业务需求,就需要像上图一样,将number修改,然后给person的age赋值,既可以修改了。但是很麻烦,这个就突出了代理的定义。现在就可以使用代理。

 <script type="text/javascript">let number = 19;let person ={name:'xiaof',sex:'女'}Object.defineProperty(person,'age',{// value:18,// enumerable:true,// writable:true,// configurable:trueget:function(){return number},set:function(value){number = value}})console.log(person)console.log(Object.keys(person))</script>

1.get和set使用

可以看到age的值为get方法返回的值

修改number值,通过set方法可以自动实现person的age属性值的修改。

2.结论

当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值

当有人修改person的age属性时,set函数(setter)就会被调用,且会收到修改的具体值。

3.Vue中的数据代理

数据代理的定义为通过一个对象代理对另一个对象中属性的操作(读/写)
1.通过对象来代理data对象中属性的操作(读/写)

2.Vue中数据代理的好处:更加方便的操作data中的数据

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

vm._data通过监听实现页面实时修改

在Vue当中,new Vue配置项的data中的变量和值都被存储在了vm上

1.get和set证明

数据代理是通过get获取值,通过set修改值,get就是直接点击省略号的内容就是get方法被调用

2.vm._data

想要证明setter过程,需要先证明_data可以控制页面上的变量实时更新。修改vm._data.name,可以发现页面进行修改。实际上{{_data.name}} = {{name}}

 

 3.图示

 

  1. 配置项的 data 被赋值给 vm._data

    • 在 Vue 实例化时,用户提供的 data 对象会被赋值给 Vue 实例的一个内部属性 _data

  2. vm._data 的值赋值给 vm

    • Vue 会通过 Object.defineProperty 或其他方法(如代理)将 vm._data 的属性代理到 vm 上,使得你可以通过 vm.name 访问 vm._data.name

  3. 修改 vm.name

    • 当你通过 vm.name 修改值时,实际上是通过代理访问和修改 vm._data.name

  4. 通过 Object.definePropertyset 修改 vm._data

    • 在 Vue 2.x 中,Object.defineProperty 被用来拦截对 vm._data 属性的设置操作。

  5. vm._data 值修改导致 vm 的属性值变化,并且页面实时更新

    • vm._data 的某个属性被修改时,Vue 的响应式系统会检测到这一变化,并通知所有依赖于该属性的组件或计算属性进行更新,从而实现页面的实时更新。

 

 

 

http://www.dtcms.com/wzjs/827855.html

相关文章:

  • 廊坊网站建站建设图片生成网址
  • 网站续费话术做网站ui设计多少钱
  • 做信息安全的网站cms203片
  • 网站建设方案总结语网站开发做前端还是后端
  • 郑州房地产网站百度网盘做自已网站
  • 网站怎么做二维码如何开 网站建设公司
  • 经典网站设计天河区网站建设
  • python和php做网站想自学软件开发难吗
  • 开网站建设公司好eclipse视频网站开发
  • 网站建设催款函建立网站的目的和功能
  • 宽屏网站源码网站建设及报价方案
  • 做婚恋网站的思路百度售后服务电话
  • 深圳好客站seowordpress 国产评论插件
  • 中小企业的网站建设论文深圳防疫最新进展
  • 网站套餐方案个人网页设计欣赏网站
  • 银川网站建设公司排名wordpress是开源的么
  • 东山县城乡规划建设局网站做网站muse好还是DW好用
  • 做网站的图片用什么格式深圳工业设计中心
  • 网站首页怎样排版wordpress js插件
  • 开发asp网站需要用到什么服务器电商网站开发常用代码
  • 网站应用网站开发自己的网站怎么做app吗
  • 专业系统网站好专门做图片的网站
  • 网站建站网站域名申请上海万户网络科技
  • wordpress站怎么优化百度seo算法
  • 做什么网站能吸引流量室内设计要学哪些科目
  • idc网站模板建筑企业分公司使用总公司资质
  • 广州 网站 建设python个人网站开发
  • 山东政务网站建设江苏交通运输厅网站建设
  • 网站改中文外贸网站制作价格表
  • 杭州网站建设及推广万网主机网站建设数据库怎么弄