vue2 双向数据绑定的实现及原理

Oject.defineProperty() 是 JavaScript 中用于定义或修改对象的属性的方法,可以控制属性的特性(如可枚举性、可配置性、可写性等)
Object.defineProperty(obj, prop, descriptor)
obj:要在其上定义属性的对象。
prop:要定义或修改的属性的名称。
descriptor:属性的描述符对象,包含属性的特性设置。
descriptor 对象包含以下属性:
configurable:属性是否可配置,默认为 false。
enumerable:属性是否可枚举,默认为 false。
value:属性的值,默认为 undefined。
writable:属性是否可写,默认为 false。
get:获取属性值的函数。
set:设置属性值的函数

	<input type="text" placeholder="请输入" id="aInput" />
	<span id="txtName"></span>
```javascript
//eg:1 数据促使视图发生变化
      let aInput = document.getElementById("aInput")
		let label = document.getElementById("txtName")
		let obj = {
			name: ''
		}
		Object.defineProperty(obj, 'name', {
			get() {
				console.log("get")
				return obj.name //返回值将被用作该属性的值
			},
			set(val) { //当该属性被赋值时,将调用此函数,并带有一个参数(要赋给该属性的值)
				console.log("set", val)
				aInput.value = val
				label.innerHTML = val
			}
		})
		aInput.oninput = function() {
			obj.name = aInput.value
		}

		// setTimeout(() => {
		// 	obj.name = '哈哈改变了'
		// }, 2000)
		
		//eg:2
		let bvalue = 50
		let o = {}
		Object.defineProperty(o, 'b', {
			get() {
				return bvalue
			},
			set(val) {
				console.log("Seto", val)
				bvalue = val
				console.log("bvalue", bvalue)
				label.innerHTML = bvalue
			}
		})

		console.log("o", o.b)
		setTimeout(() => {
			o.b = 233333333333
		}, 1500)
		console.log("o", o.b)
		console.log("bvalue", bvalue);

相关推荐

  1. vue2 双向数据实现原理

    2024-05-16 01:44:04       11 阅读
  2. Vue双向数据原理

    2024-05-16 01:44:04       45 阅读
  3. Vue2Vue3 双向数据区别和原理

    2024-05-16 01:44:04       18 阅读
  4. Vue双向数据原理

    2024-05-16 01:44:04       30 阅读
  5. vue双向数据原理(v2、v3)

    2024-05-16 01:44:04       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-16 01:44:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-16 01:44:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-16 01:44:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-16 01:44:04       18 阅读

热门阅读

  1. OpenAI和互联网行业的发展,有着异曲同工之处

    2024-05-16 01:44:04       16 阅读
  2. 数据库SQL查询语句汇总详解

    2024-05-16 01:44:04       11 阅读
  3. 单例模式介绍

    2024-05-16 01:44:04       12 阅读
  4. 调用外部的webservice示例

    2024-05-16 01:44:04       11 阅读
  5. 局域网路由器 交换机 ap模式

    2024-05-16 01:44:04       17 阅读
  6. Spring-Cloud-OpenFeign源码解析-02-OpenFeign自动装配

    2024-05-16 01:44:04       12 阅读
  7. 【鱼眼+普通相机】相机标定

    2024-05-16 01:44:04       9 阅读
  8. FastAdmin菜单规则树形结构分类显示

    2024-05-16 01:44:04       9 阅读