Javascript 对象监视

Javascript Object watch

本文关键字:监视 对象 Javascript      更新时间:2023-09-26

我使用下一个代码来监视javascript对象中的更改:https://gist.github.com/eligrey/384583

我有下一个用于检查更新的代码:

var Obj = {
    prop: 0,
    inc: function() {
      this.prop ++;
    }
};
Obj.watch('prop', function(prop, oldv, newv) {
    console.log(prop);
    console.log(oldv);
    console.log(newv);
  });

单击按钮时,我递增prop

$("#btn").on('click', function() {
    Obj.inc();
});

当我运行此代码并单击按钮时,我进入控制台:

prop
0 
1

没错。

但是,当我下次单击时,我得到:

z
undefined
NaN

在线演示:http://jsbin.com/jenarapufo/2/edit?html,js,console,output

为什么?

您需要

从回调中返回新值watch。更新您的处理程序:

Obj.watch('prop', function(prop, oldv, newv) {
    ...
    return newv;
})

您需要从回调中返回新值:

Obj.watch('prop', function(prop, oldv, newv) {
  console.log(prop);
  console.log(oldv);
  console.log(newv);
  return newv;
});