先上效果图

简单的实现数据的双向绑定
首先来了解一个东西:Object.defineProperty()

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

这里是MDN对这个的详细说明
简单点说:

这个方法可以修改现有对象属性的值
Object.defineProperty(obj, prop, descriptor)
参数说明:
obj:定义属性的对象
prop:修改的属性
descriptor:修改的属性描述符

这边只挑最简单的说,

get:

官方:一个给属性提供 getter 的方法,如果没有 getter 则为 undefined。当访问该属性时,该方法会被执行,方法执行时没有参数传入,但是会传入this对象(由于继承关系,这里的this并不一定是定义该属性的对象)。默认为 undefined。

**简单的说:当你需要取对象的属性值时,就是来调用这个函数,取到值的**

set:

官方:一个给属性提供 setter 的方法,如果没有 setter 则为 undefined。当属性值修改时,触发执行该方法。该方法将接受唯一参数,即该属性新的参数值。默认为 undefined。

**简单的说:当你需要设置(改变)对象的属性值时,就是来调用这个函数,达到修改的**

接下来上代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
<div id="aa"></div>
<div>
<input type="text" oninput="changedata(this.value)">
</div>
<script>
var data = {};
var dom_aa = document.getElementById("aa") function changedata(value){
data.a = value
} //直接使用Object.defineProperty里面的set方法进行视图改变
Object.defineProperty(data,"a",{
set:function(newValue){
dom_aa.innerHTML = newValue;
},
get:function(){
return a;
}
})
</script>
</body>
</html>

这段代码拷贝直接运行

最新文章

  1. Canvas里绘制矩阵文字
  2. 关于Linux:chmod和chown知识
  3. 1-13 代理ARP和RARP
  4. 【BZOJ】2086: [Poi2010]Blocks
  5. 数据库的Instance/Crash Recovery
  6. Java动态代理的两种实现方式:
  7. 项目启动异常java.lang.OutOfMemoryError: PermGen space
  8. C# CLRInsideOut 托管代码与非托管代码互操作,产生相关调用代码的好工具 C++ 头文件转C# 的好工具(转
  9. Chrome Firefox 自定义背景色
  10. http服务详解(1)——一次完整的http服务请求处理过程
  11. 《TCP-IP详解卷1:协议》【PDF】下载
  12. 算法(第四版)C# 习题题解——1.3
  13. Html5、css、JavaScript基础
  14. exiting pxe rom 无法启动
  15. Linux学习小记(1)
  16. Asp.net Mvc post表单提交多个实体模型
  17. unity缓动插件DOTween Pro v0.9.680
  18. am335x Linux kernel DTS pinmux 定义记录
  19. LOJ10131. 「一本通 4.4 例 2」暗的连锁【树上差分】
  20. mysql_use_result的使用

热门文章

  1. Springboot2.x集成Redis哨兵模式
  2. java程序启动脚本
  3. Python模块logging
  4. 遍历文件夹下的csv,把数据读进一张表
  5. hive中的索引创建
  6. 四、JVM — 类文件结构
  7. 当页面完全加载完成后执行一个JS函数
  8. vps(windows2003)安全设置参考
  9. nsswitch.conf - 系统数据库及名字服务开关配置文件
  10. Centos安装PHP PS:LAMP环境时,为少出错误,先安装一下编译环境