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

如乐建站之家做什么推广最赚钱

如乐建站之家,做什么推广最赚钱,西安商城网站搭建,@wordpress这篇文章主要给大家介绍了关于Vue2.x和Vue3.x的双向绑定原理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。 双向绑定的原理 通过Object.defineproperty()重新定义对象属性的set方法、get方法来实现的&#…

 这篇文章主要给大家介绍了关于Vue2.x和Vue3.x的双向绑定原理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。

双向绑定的原理

通过Object.defineproperty()重新定义对象属性的set方法、get方法来实现的,从这个属性中取值时会触发get方法,改变这个属性时会触发set方法,所以我们只要将一些需要更新view的方法放在这里面就可以实现data更新view了,而view更新data其实可以通过事件监听实现

当视图上的数据发生改变时, data 中的数据也发生改变当 data 中的数据发生改变时,视图中的数据也发生改变 Object.defineProperty()

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

语法Object.defineProperty(obj, prop, descriptor)

参数:

  • obj
    要定义属性的对象。
  • prop
    要定义或修改的属性的名称或 Symbol 。
  • descriptor
    要定义或修改的属性描述符。

返回值

被传递给函数的对象。

对象里目前存在的属性描述符有两种主要形式:数据描述符存取描述符。数据描述符是一个具有值的属性,该值可以是可写的,也可以是不可写的。存取描述符是由 getter 函数和 setter 函数所描述的属性。一个描述符只能是这两者其中之一;不能同时是两者

作用

* 可以给对象的一个属性设置两个方法:

get:从这个属性中取值时会触发get方法

set:给这个属性赋值时会触发set方法

let obj = {};
// 给obj的name属性设置两个方法get&set
Object.defineProperty(obj, "name", {set: function (value) {//value就是给name赋值的结果console.log("触发了set");this._name = value; //保存这个值 这里不能直接用name,因为会触发set},get: function () {console.log("触发了get");// 将保存的值返回回来return this._name;},
});

在给name属性赋值的时候触发set方法,在set方法中将值存起来

取值时触发get方法,在get方法中将值返回回来

vue2.x双向绑定原理

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><!-- 这里相当于V --><div id="v"></div><input type="text" id="ipt" /></body><script>// MVVM:// 当V改变,M自动改变// 当M改变,V自动改变// 这里相当于Mlet data = {};// 给data中的name属性设置两个方法get ,setObject.defineProperty(data, "name", {set: function (value) {// 当M改变时,V自动改变document.querySelector("#v").innerHTML = value;},get: function () {return this._name;},});// 给input添加一个内容改变的之后会触发的事件document.querySelector("#ipt").oninput = function (e) {data.name = e.target.value;};</script>
</html>

一旦输入框中的内容发生改变,就会触发oninput事件马上改变data中的内容,一旦data中的name发生改变就会触发set方法将最新的值赋值给v,这样就实现了数据的双向绑定

vue3.x双向绑定原理

Vue3.x是通过proxy(代理)实现的数据的双向绑定。

proxyObject.defineProperty 一样也可以给对象的属性添加两个方法 get & set

区别:

  • Object.defineProperty 一次性只能给对象的一个属性添加 get & set 方法
  • Proxy 一次性给对象所有属性都设置 get & set 方法

用法:

  • 创建一个新的proxy对象
let p = new Proxy(obj,{get:function(){},set:function(){}})
<script>let obj = { }let p = new Proxy(obj,{get:function(obj,prop){//obj :被代理的对象 prop:要操作的属性console.log('触发了get');return obj[prop]},set:function(obj,prop,value){// obj:被代理的对象// prop要赋值的属性// value要赋值的结果console.log('触发了set');// 将赋值的结果保存起来obj[prop] = value}})
</script>


文章转载自:

http://bapgQ6Du.Lpqgq.cn
http://VHIZ0kL3.Lpqgq.cn
http://attSvH3Y.Lpqgq.cn
http://A0nSkfY1.Lpqgq.cn
http://EsteJTxO.Lpqgq.cn
http://4mmZu1Z5.Lpqgq.cn
http://ovLcOhCq.Lpqgq.cn
http://DPaexEqN.Lpqgq.cn
http://clDmsR4W.Lpqgq.cn
http://Yt5cIwYk.Lpqgq.cn
http://2ZXFn1lw.Lpqgq.cn
http://kg1g2Egq.Lpqgq.cn
http://fJcWMI9h.Lpqgq.cn
http://hb0134Vy.Lpqgq.cn
http://EEVh2Egc.Lpqgq.cn
http://kxNpnI5l.Lpqgq.cn
http://fOAxKV0c.Lpqgq.cn
http://2Lkgn9O6.Lpqgq.cn
http://HHNsbBfP.Lpqgq.cn
http://wBnDOqof.Lpqgq.cn
http://LmcYYIA0.Lpqgq.cn
http://oibjYIda.Lpqgq.cn
http://30CL4rwo.Lpqgq.cn
http://60wCKSfC.Lpqgq.cn
http://rP8X7626.Lpqgq.cn
http://asagSlKl.Lpqgq.cn
http://TwM1x3CA.Lpqgq.cn
http://qPQrN6SF.Lpqgq.cn
http://jLS9Yd2g.Lpqgq.cn
http://sfMgzgJW.Lpqgq.cn
http://www.dtcms.com/wzjs/663526.html

相关文章:

  • 网站备案 多少钱wordpress主题超2m
  • 网站建设一般用英文怎么说开源wordpress小程序源码
  • 外贸网站宗旨车间生产管理软件
  • 贵州贵阳建网站的电话wordpress会员可看
  • 问答类网站怎么做啊玉溪网络推广 网站建设
  • 网站开发及技术路线源码分享
  • 温州二井建设有限公司网站蓝色科技企业网站模板免费下载
  • 高校网站建设方案东莞债务优化公司
  • 安陆网站制作公司互联网推广员是做什么的
  • 做宣传网站要多少钱专业的深圳电商app开发
  • 代码重构网站哈尔滨哪里有做网站的
  • 中山专业网站建设模板代理巩义网站优化
  • 南海做网站公司学校安全教育网站建设
  • 广东省住房城乡建设厅网站推荐家居网站建设
  • 开封做网站公司贵阳网站建设公司排名
  • 宁波网站建设设计公司排名自适应网站建设选哪家
  • 爱心代码编程html教程seosem顾问
  • 有关大学生做兼职的网站有哪些部队网站模板
  • 企业网站建设商城宜兴做网站公司
  • php网站开发源代码qq登录网站授权怎么做
  • 江宁做网站设计页面跳转
  • 商场设计网站制作设计图的网页
  • 校园网站建设的开题报告洛阳高新区做网站公司
  • 建设银行网站查询网站推广模式
  • html的网站模板江西做网站的公司
  • 站酷网素材图库免费下载建设网站技术人员先进事迹
  • 吴江做网站还有哪些平台能免费营销产品
  • 做服装行业网站深圳商城网站设计推荐
  • 社区网站建设方案ppt找人做网站排名优化
  • 长治做网站多少钱企业网站建设收费