vue的双向绑定原理:使用object.definproperty改写data数据属性的set内容,当属性发生更改时,set函数调用,通知vue组件绑定的watcher(一个组件一个watcher),然后对相关试图进行刷新
仿照这个思路,做了一下demo,因为vue依靠object.definproperty实现mvvm,由于ie不支持object.definproperty,所以vue不能兼容低版本的ie浏览器
实现补充

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div><input id="in" type="text" value=""/><div id="out">{{hello}}</div>
</div>
</body>
<script>var isIE = !!window.attachEvent;var input = document.getElementById('in'),out = document.getElementById('out'),obj = {}console.log(isIE);function addEvent(element,type,handler){if(element.attachEvent){element.attachEvent('on'+type,handler)}else if(element.addEventListener){element.addEventListener(type,handler)}}if (!isIE) {Object.defineProperty(obj, 'hello', {set: function (val) {input.value = val;out.innerText = val;}})input.onkeyup = function (e) {obj.hello = e.target.value}obj.hello = ''} else {function MyObject(argus) {this.value=''this.set = argus.set || function (val) {this.value = val}this.get = argus.get || function () {return this.value}}var hello = new MyObject({set: function (val) {input.value = val;out.innerText = val;}})obj.hello=helloaddEvent(input,'keyup',function (e) {obj.hello.set(input.value)})}</script>
</html>

仿照vue实现双向数据绑定兼容IE6相关推荐

  1. 手写Vue 的双向数据绑定

    在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出原理. 本篇文章中我将会仿照vue写一个双向数据绑定的实例,名字就叫myVue吧.结合注释,希 ...

  2. 面试题:你能写一个Vue的双向数据绑定吗?

    在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出原理.本篇文章中我将会仿照vue写一个双向数据绑定的实例,名字就叫myVue吧.结合注释,希望 ...

  3. 深入了解Vue的双向数据绑定

    前言 在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出原理.本篇文章中我将会仿照vue写一个双向数据绑定的实例,名字就叫myVue吧.结合注释 ...

  4. 面试题:你能写一个 Vue 的双向数据绑定吗?

    作者:呆头呆脑丶 segmentfault.com/a/1190000014274840 在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出原理 ...

  5. 写一个Vue的双向数据绑定

    原文 https://segmentfault.com/a/1190000014274840 在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出 ...

  6. 你能写一个 Vue 的双向数据绑定吗?

    在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出原理.本篇文章中我将会仿照vue写一个双向数据绑定的实例,名字就叫myVue吧.结合注释,希望 ...

  7. Vue 的双向数据绑定原理解析

    在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出原理.本篇文章中我将会仿照vue写一个双向数据绑定的实例,名字就叫myVue吧.结合注释,希望 ...

  8. vue的双向数据绑定的原理

    VUE实现双向数据绑定的原理就是利用了 Object.defineProperty() 这个方法重新定义了对象获取属性值(get)和设置属性值(set)的操作来实现的. 代码演示:defineProp ...

  9. Vue的双向数据绑定原理(极简版)

    先说面试答案: 答: vue.js是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者 ...

最新文章

  1. git init 与 git init --bare 区别
  2. 威驰fs高配和低配有什么区别_“电子手刹”和“机械手刹”的区别有多大?很多车主不清楚...
  3. VS2010中使用JSONCPP方法
  4. 17、java中的集合(4)
  5. CSS3 选择器用法小结
  6. python3数字类型分为_Python初学3——数字类型及操作
  7. 收藏 | 人工智能与模式识别会议集锦
  8. 微信小程序 this和that详解及简单实例
  9. ArcEngine二次开发_04(鼠标点击图层点显示属性(两个及以上))
  10. 视频编解码(十五):解码器解码查错步骤
  11. 4. Nginx 与 PHP
  12. suse linux 使用教程,suse linux 命令教程
  13. python仿真,clark变换和park变换
  14. python分析qq聊天记录
  15. java sof栈泄露_java虚拟机(四)--内存溢出、内存泄漏、SOF
  16. Altium Designer 软件介绍
  17. java cause_Cause: java.lang.UnsupportedOperationException
  18. java 处理unicode_[转]Java的Unicode编码转化(多种情况处理方法)
  19. 均值场博弈_平均场博弈论(Mean-field Games)简介
  20. 小龙虾炒菜机器人_5分钟一盘小龙虾,8分钟一份红烧肉,幕后高手原来是“她”…...

热门文章

  1. LeGO-LOAM 系列(1): LeGO-LOAM 安装以及概述
  2. window 使用 Edge/Chrome 调试手机 iOS 的 Safari 浏览器
  3. 7-1 人民币与美元汇率兑换程序 (10分)
  4. java导出doc文档
  5. 云服务器配置选择方法
  6. mysql数据写入磁盘的原理_WAL(Write Ahead Log)机制解析
  7. python 实现图片批量加入水印!
  8. SQL 修改表的常用命令
  9. Laravel 漏洞合集
  10. 编译原理陈火旺第三版第六章课后题答案