//当数据改变时,更新视图,和vue的有点类似let obj = {    name:{        name:'ll'    },    age:12,}let arr = [1,2,3];//针对数组的写法//当需要改变原型对象上的方法时,不要直接在prototype上修改,否则以后使用的都是修改后的方法//创建一个新对象,可以获取到Array.protyotype上的所有方法let proto = Object.create(Array.prototype);['pop','push','shift','unshift','reverse','sort','splice'].forEach(method=>{    proto[method] = function(){        update();        let old = Array.prototype[method];        old.call(this,...arguments)    }})function update(){    console.log('更新视图')}function observer(obj){    //如果是数组,不循环,把数组的新方法赋给该数组    if(Array.isArray(obj)) return;    if(typeof obj !== 'object'){        return obj.__proto__ = proto;    }    for(let key in obj){        defineReactive(obj,key,obj[key]);    }}//定义属性的getter和setterfunction defineReactive(obj,key,value){    observer(value)   //如果值是对象,继续循环定义getter和setter    Object.defineProperty(obj,key,{        get(){            return value;        },        set(newval){            //如果新值是个对象,也要循环定义getter和setter            if(typeof newval === 'object'){                observer(newval)            }            //如果数据有变化,更新视图            if(value !== newval){                update();            }            value = newval        }    })}//对象observer(obj);//数组observer(arr);//更改数据obj.name.name = 'mj';arr.push(4);console.log(obj);console.log(arr)

转载于:https://www.cnblogs.com/qiruoranbeginner/p/10980768.html

数据改动,更新视图,类似于vue相关推荐

  1. angular 强制更新视图_angular,vue,react数据双向绑定原理分析

    在不同的 MVVM 框架中,实现双向数据绑定的技术有所不同. Angular数据绑定 Angular 采用"脏值检测"的方式,数据发生变更后,对于所有的数据和视图的绑定关系进行一次 ...

  2. avalon数据已更新,视图未更新的bug修复

    $computed: {pinlei() {var key = this.currentProduct.key || 'youpin';console.log(key, "我是key&quo ...

  3. vue 路由参数变化,页面不刷新(数据不更新)解决方法

    路由参数改变,页面数据不更新解决方法: http://localhost:8080/#test?id=1 http://localhost:8080/#test?id=2,参数切换后,数据未更新 以下 ...

  4. el-date-picker 的一些小坑(chang事件不生效以及页面数据不更新)

    前几天改了一个bug,bug是说el-date-picker这个时间日期选择器选择的时间不能实时更新 chang方法不生效需要使用input方法 最开始我尝试在去打印一下他的时间,根据官方文档chan ...

  5. couchdb 视图操作_CouchDB 视图简介及增量更新视图的方法

    CouchDB 视图简介及增量更新视图的方法 郭 君, 高 云鹤, 和 林 宜谦 2016 年 4 月 18 日发布 简介 CouchDB 是一种 NoSQL 数据库,数据以 JSON 文档的形式存储 ...

  6. vue数组中数据变化但是视图没有更新解决方案

    vue数组中数据变化但是视图没有更新解决方案 参考文章: (1)vue数组中数据变化但是视图没有更新解决方案 (2)https://www.cnblogs.com/sufubo/p/6906261.h ...

  7. safair中vue修改了数据,但是视图没有更新解决方案

    使用vuex,也适用了splice来改数据, 修改了评论的数据,但是视图没有更新. state.tabContainer.splice(index, 1, {info: info}); 查看dom元素 ...

  8. Vue中的Diff算法 patch函数-简单Diff算法-双端Diff算法-快速Diff算法-当数据发生改变,视图如何更新?

    文章目录 Vue中的Diff算法 概述 前置知识 patch方法 简单Diff算法 总结 双端Diff算法 --vue2 快速Diff算法 --vue3 vue2和vue3 Diff算法的区别 当数据 ...

  9. js更新数组对象_7 种Vue 数据已更新而页面没有更新的情况及深化总结(收藏)

    作者:前端1943 链接:https://segmentfault.com/a/1190000022772025 如果你发现你自己需要在 Vue 中做一次强制更新,99.9% 的情况,是你在某个地方做 ...

最新文章

  1. 手机号码输入历史记录匹配
  2. Spring常见面试题及答案汇总1000道(春招+秋招+社招)
  3. 李飞飞团队最新论文:如何对图像中的实体精准“配对”?(附代码论文)
  4. Putty常用属性设置
  5. C++程序设计之使用istringstream
  6. Java 分布式 RPC 框架性能大比拼,Dubbo 排第几?
  7. [css] 当使用opacity时会使得元素的子元素也透明,此时不想要子元素也跟着透明怎么办?
  8. 笔记:《突破现实的困境:趋势、禀赋与企业家的大战略》
  9. linux进程增删改查,iptables的增删改查
  10. 模拟退火解决TSP问题
  11. 欧洲杯推动夜间消费发展 便利蜂晚20时-凌晨2时服务人次创新高
  12. nacos 下线接口_微服务架构nacos注册中心为什么那么火
  13. python脚本根据cookies自动登录网站_为爬虫获取登录cookies:使用万能钥匙 Selenium 搞定一切登录...
  14. (29)Spring boot 文件上传(多文件上传)【从零开始学Spring Boot】
  15. 能源巨头BP称已经测试了“内部”代币
  16. 点亮了中行U盾12864屏线 12液晶,附12864详细手册
  17. 2018年全国国家级自然保护区功能区划空间分布
  18. 如何成为一名数据科学家?
  19. 常用 vm 参数分析
  20. You-Get,多网站视频下载工具,非常方便

热门文章

  1. vue2.0搭建vue手脚架(vue-cli)
  2. Jzoj5429 排列
  3. Docker 学习应用篇之一: 初识Docker
  4. sublime text3 注册码,亲测可用
  5. 白领丽人:这六行盛产“钻石王老五”
  6. android studio tree,Git 、Sourse Tree 和 Android Studio配置遇到的问题
  7. P1038 神经网络(拓扑排序)
  8. java编译器代码检查_java 命名代码检查-注解处理器
  9. mysql兼容性高吗_MySQL与标准的兼容性
  10. BAT大厂工程师必会Ansible,你还不来学?