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,"学习")
相关推荐
Dontla4 小时前
n8n飞书webhook配置(飞书机器人、飞书bot、feishu bot)Crypto节点、js timestamp代码、Crypto node
javascript·机器人·飞书
tager5 小时前
🔥3行代码搞定全局代理!告别插件依赖的极简方案
前端·fiddler·charles
gnip6 小时前
axios 拦截器实现用户无感刷新 access_token
前端
程序员码歌6 小时前
【零代码AI编程实战】AI灯塔导航-成果展示篇
前端·ai编程·cursor
gnip6 小时前
前端实现即时通讯,常用的技术
前端
烛阴7 小时前
告别 any!用联合类型打造更灵活、更安全的 TS 代码
前端·typescript
excel8 小时前
全面解析 JavaScript 类继承:方式、优缺点与应用场景
前端
用户21411832636028 小时前
dify案例分享-100% 识别率!发票、汇票、信用证全搞定的通用票据识别工作流
前端
Hello.Reader9 小时前
Elasticsearch JS 客户端子客户端(Child Client)实践指南
大数据·javascript·elasticsearch
拾光拾趣录9 小时前
基础 | HTML语义、CSS3新特性、浏览器存储、this、防抖节流、重绘回流、date排序、calc
前端·面试