原生JS如何监听对象是否有属性或方法的新增或更新

问题描述

想为react实现一个Log功能
可以在react任何生命周期函数内调用setLog,Log方法内有自己的DOM实现
由于Log数据量较大,每次setLog转字符串对比感觉既不优雅又有性能开销

相关代码

var Log = {};
var strLog = '';
function setLog(key, val) {
    Log[key] = val;
    var cacheLog = strLog;
    strLog = JSON.stringify(YHH5Log);
    if (cacheLog == strLog) {
        // TODO
    }
}
function getLog(key) {
    return Log[key];
}
module.exports = {
    setLog: setLog,
    getLog: getLog,
}

你期待的结果是什么?实际看到的错误信息又是什么?

  1. 请问对象原型链上有监听其变化的方法吗?
  2. 用Object.defineProperty如何实现?

PS:尽量不使用ES6新语法实现,不然要在控件内再拉个babel

阅读 1.9k
1 个回答

利用Object.defineProperty()定义属性的setget方法。
image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题