Vue2中响应式的原理

Vue2中实现响应式的原理

vue2实现原理

使用Object.defineProperty()的get()与set()来实现响应式

javascript 复制代码
<script>
    let p = {}
    let person = {
        name: "张三",
        sex:"男",
        hobby: ["吃饭","睡觉"]
    }
    Object.defineProperty(p,"age",{
        // value: 18,
        // enumerable: true, //是否可以遍历,默认 false
        // writable: true,  //是否可以修改,默认 false
        configurable: true, //是否可以被删除,默认 false
        get(){
            console.log("有人读取了age属性")
            return p.age;
        },
        set(value){
            console.log("有人修改了age属性")
            p.age = value
        }
    })
</script>

Vue2响应式存在的问题

  1. 对象增加属性
javascript 复制代码
this.$set(this.perosn,'age',30)
Vue.set(this.person,"age",30)
  1. 删除对象属性
javascript 复制代码
this.$delete(this.perosn,'age')
Vue.delete(this.person,"age")
  1. 修改数组
javascript 复制代码
this.$set(this.person.hobby,0,"学习")
Vue.set(this.person.hobby,0,"学习")
this.person.hobby.splice(0,1,"学习")
相关推荐
高级程序源6 小时前
django校园寻物通失物招领平台32261-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·django·flask·课程设计
WeiXin_DZbishe6 小时前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217
vue.js·spring boot·python·django·php·课程设计
架构技术专栏7 小时前
Agent 工具调用:从工具声明到执行反馈
前端·人工智能·后端
别动我齐刘海8 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
志尊宝8 小时前
Vue3 零基础每日笔记(071):暗黑模式与主题切换——CSS 变量 + Element Plus 暗黑方案
前端·css·笔记·vue·html·前端开发·软件开发
WeiXin_DZbishe9 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
刘发财9 小时前
前端如何生成10000页PDF文件?
前端·javascript·开源
WeiXin_DZbishe9 小时前
基于Springboot+AI的kuall音乐广场的设计与实现-计算机毕设 附源码【课程设计】12715
vue.js·人工智能·spring boot·后端·python·php·课程设计
A接拉起0079 小时前
2026 年 JavaScript 开发者需要了解的知识
前端·javascript·后端
_馒头9 小时前
pixiJs游戏开发实践 - 跳棋小游戏
javascript·vue.js