<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>双向数据绑定原理(三种实现方式)</title></head><body><input type="text" id="a" /><span id="b"></span><!--//脏检查我们说Angularjs(这里特指AngularJS 1.x.x版本,不代表AngularJS 2.x.x版本)双向数据绑定的技术实现是脏检查,大致的原理就是,Angularjs内部会维护一个序列,将所有需要监控的属性放在这个序列中,当发生某些特定事件时(注意,这里并不是定时的而是由某些特殊事件触发的),Angularjs会调用 $digest 方法,这个方法内部做的逻辑就是遍历所有的watcher,对被监控的属性做对比,对比其在方法调用前后属性值有没有发生变化,如果发生变化,则调用对应的handler。网上有许多剖析Angularjs双向数据绑定实现原理的文章,比如 这篇 ,再比如 这篇 ,等等。这种方式的缺点很明显,遍历轮训watcher是非常消耗性能的,特别是当单页的监控数量达到一个数量级的时候。//观察机制博主之前有一篇转载翻译的文章, Object.observe()带来的数据绑定变革 ,说的就是使用ECMAScript7中的 Object.observe 方法对对象(或者其属性)进行监控观察,一旦其发生变化时,将会执行相应的handler。这是目前监控属性数据变更最完美的一种方法,语言(浏览器)原生支持,没有什么比这个更好了。唯一的遗憾就是目前支持广度还不行,有待全面推广。//封装属性访问器国产mvvm框架vue.js实现数据双向绑定的原理就是属性访问器。它使用了ECMAScript5.1(ECMA-262)中定义的标准属性 Object.defineProperty 方法。针对国内行情,部分还不支持 Object.defineProperty 低级浏览器采用VBScript作了完美兼容,不像其他的mvvm框架已经逐渐放弃对低端浏览器的支持。--><script>//封装属性访问器//Object.defineProperty(obj, prop, descriptor)//obj ,待修改的对象//prop ,带修改的属性名称//descriptor ,待修改属性的相关描述var obj = {};Object.defineProperty(obj,'a',{set:function(newVal){document.getElementById('a').value = newVal;document.getElementById('b').innerHTML = newVal;}});document.addEventListener('keyup',function(e){obj.a = e.target.value;});</script></body>
</html>

双向数据绑定原理(三种实现方式)相关推荐

  1. 深入学习SAP UI5框架代码系列之七:控件数据绑定的三种模式 - One Way, Two Way和OneTime实现原理比较

    这是Jerry 2021年的第 8 篇文章,也是汪子熙公众号总共第 279 篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) SAP UI5 module懒加 ...

  2. 详谈RDMA技术原理和三种实现方式

    ​导读:远程直接内存访问(即RDMA)是一种直接内存访问技术,它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入.RDMA最早在Infiniband传输网络上实现,后来业界厂家把 ...

  3. c语言二叉树的遍历菜单系统,C语言二叉树的三种遍历方式的实现及原理

    C语言二叉树的三种遍历方式的实现及原理 发布时间:2020-10-03 19:43:57 来源:脚本之家 阅读:63 作者:看雪. 二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个 ...

  4. c语言中二叉树中总结点,C语言二叉树的三种遍历方式的实现及原理

    二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个名字?是根据根节点的顺序命名的. 比如上图正常的一个满节点,A:根节点.B:左节点.C:右节点,前序顺序是ABC(根节点排最先,然后 ...

  5. 【Vue的双向数据绑定原理】

    Vue的双向数据绑定原理 先说面试答案: 1. 什么是setter.getter 2. 什么是Object.defineProperty() ? 先简单的实现一个js的双向数据绑定来熟悉一下`Obje ...

  6. 前端面试题 HTML5 CSS3(盒子模型、盒子水平垂直居中、经典布局) JS(闭包、深浅克隆、数据劫持和拦截) 算法(排序、去重、数组扁平化) Vue(双向数据绑定原理、通信方式)

    前端面试题 HTML5 相关面试题 CSS3 相关面试题 盒子模型 盒子水平垂直居中的方案 经典布局方案 圣杯布局 双飞翼布局 flex布局 定位方式布局 css实现三角形 JS 相关面试题 8种数据 ...

  7. vue双向数据绑定原理 1

    1. 原理 1.1 vue双向数据绑定原理,又称vue响应式原理,是vue的核心,双向数据绑定是通过数据劫持结合发布订阅模式的方式来实现的,也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化 ...

  8. Vue数据响应式与双向数据绑定原理区分

    很多小伙伴搞不清楚数据响应式与双向数据绑定这两个原理,还有人自然的认为它们两者是相同的,接下来我们来看看它们二者的区分吧! 数据响应式是Vue的核心特性之一,而双向数据绑定是通过指令或修饰符实现的一种 ...

  9. OLED显示屏驱动:8080并口,IIC,SPI三种驱动方式

    本文介绍了对OLED的几种驱动方式,8080并口,IIC,SPI三种驱动方式,采用的单片机是STM32F407. 文章目录 一.OLED驱动原理介绍 二.8080并口驱动方式 三.IIC驱动方式 四. ...

最新文章

  1. HttpContext.Current.Session ,出现未将对象引用设置到实例上
  2. 开发者必备的15 个Web开发工具
  3. Elasticsearch-02CentOS7安装elasticsearch-head插件
  4. [How TO]-Ubuntu 20.04修改终端标题栏文字
  5. 230u拆解 网卡接口_全网首发 HP ProDesk 400 G5 Desktop Mini 九代1L小主机拆解评测
  6. 计算机工程与应用 效率,多目标进化算法搜索鲁棒最优解效率研究-计算机工程与应用.PDF...
  7. java数据抽取到数据仓库_关于数据增量抽取的模拟实现——脚本实现
  8. 200t不稳定_技术革新!将不可能变为可能 这家企业是怎么做到的?
  9. 实验 VoIP通信的配置
  10. 时文阅读-The economist-Whatever Carlos Ghosn’s misdeeds, Japan’s openness is also on trial
  11. 标签、画像设计与模型落地
  12. Vmware中win7联网
  13. ce变速注入dll失败_调用CE变速DLL注入的软件含HOOK模块
  14. 关于 ‘cosylocal‘ 进程占满内存的问题
  15. Silverlight Tools 3 安装时发生严重错误
  16. Java学习方法的一点个人见解-完整版
  17. 新员工如何快速融入新的工作环境
  18. java水平测试_【考试】java基础知识测试,看你能得多少分?
  19. 《python灰帽子》笔记--构建自己的调试器
  20. tipsy - Facebook-style tooltip plugin for jQuery

热门文章

  1. 安卓开发学习(只有java基础)
  2. CSS属性 – cursor
  3. Power BI中带筛选条件的查询功能如何实现
  4. 普源DG1022U信号发生器技术参数
  5. java验证歌德巴赫猜想
  6. 【题解】士兵训练-C++
  7. 笔记:单轴上的动量守恒
  8. 基于STM32F103单片机智能安全门禁人体感应报警方案设计
  9. 校招答疑总结!准备实习、校招的学妹(弟)们,可不要努力错方向了!
  10. Dagger2教程二之基础使用(原)