美文网首页
JS实现监听对象属性变化的函数

JS实现监听对象属性变化的函数

作者: 我没叫阿 | 来源:发表于2024-04-10 10:28 被阅读0次
  • 使用 Object.defineProperty()
function observe(obj) {
    for (let key in obj) {
        let val = obj[key];
        Object.defineProperty(obj, key, {
            enumerable: true,
            configurable: true,
            get: function () {
                return val;
            },
            set: function (newVal) {
                if (newVal !== val) {
                    console.log(`属性 ${key} 从 ${val} 变成了 ${newVal}`);
                    val = newVal;
                }
            }
        });
    }
}

let obj = { count: 0 };
observe(obj);
obj.count = 1;  
  • 使用 Proxy
function observe(obj) {
    return new Proxy(obj, {
        get(target, propKey, receiver) {
            return Reflect.get(target, propKey, receiver);
        },
        set(target, propKey, value, receiver) {
            let oldValue = target[propKey];
            if (value !== oldValue) {
                console.log(`属性 ${propKey} 从  ${oldValue} 变成了 ${value}`);
            }
            return Reflect.set(target, propKey, value, receiver);
        }
    });
}

let obj = { name: 'zs', age: 20, gender: 'male' };
obj = observe(obj);
obj.age = 1;  

相关文章

  • vue_day05

    watch监听:这个对象中可以监听到data中属性的变化,并触发属性对应的function函数,通过newVal和...

  • 54-Vue路由-监听路由变化

    watch属性不仅能够监听vm数据变化,还可以监听任何对象的属性变化,比如监听路由地址的变化.这里路由对象,监听方...

  • 2.4 KVO设计模式(监听对象属性的变化)

    KVO设计模式(监听对象属性的变化) BOSS类 KVO设计模式(监听对象属性的变化).png

  • OC 基础-KVO(1)

    KVO:全称:key-value-observing,俗称“键值监听”,可以用于监听某个对象属性值的变化内部实现(...

  • 11.Watch深度监听 (VUE全栈开发学习笔记)

    1. 字符串形式监听监听对象属性a的值的变化 Vue.js会一层一层解析下去,直到遇到属性a,然后才给a设置监听函...

  • iOS KVO内部实现原理

    KVO基本概念:主要用来监听某个对象的某个属性的变化,当发生变化的时候,观察者会调用对应的函数,实现对应的功能。 ...

  • Http 监听器

    用来监听特定对象的创建或销毁、属性的变化的!是一个实现特定接口的普通java类! Servlet中哪些对象需要监听...

  • Vue实例的watch属性

    一、说明watch属性,可以监听data中指定数据的变化,然后可以触发这个watch对象中对应的处理函数。监听的数...

  • KVO

    基础使用 监听一个对象的属性变化,比如监听TCKVOObject的name属性 监听 回调 移除监听 触发 打印 ...

  • watch

    深度监听,handler特定回调函数不容修改监听整个对象监听对象里面的某一个属性

网友评论

      本文标题:JS实现监听对象属性变化的函数

      本文链接:https://www.haomeiwen.com/subject/isyqxjtx.html