JS如何检查类变量是否更改?

时间:2018-11-16 00:08:28

标签: javascript meteor javascript-events meteor-blaze

我在一个类中有一个可以随时更改的变量?有没有一种方法可以让js反应地检查它是否已更改以及是否确实执行了功能?我没有控制该对象的权限,可以对其进行查看和修改,但是我的代码不是唯一可以执行此操作的代码。

2 个答案:

答案 0 :(得分:2)

如果您是此对象的所有者,则可以在其上使用Proxy对象代替原始对象。在这种情况下,您将完全控制与对象一起产生的每个操作

答案 1 :(得分:0)

在Meteor(已为其添加标签)中,您可以使用Tracker来自动运行功能,无论响应数据源是由谁改变还是由谁改变。

阅读:https://docs.meteor.com/api/tracker.html

现在在Blaze(您也已对其进行了标记)中,您还具有一个模板内部跟踪器:

Template.myTemplate.onCreated(function (){
  const instance = this

  instance.autorun(() => {
    // this behaves like Tracker.autorun
  })
})

如何使变量无功?

如果在自动运行中访问反应变量,则会触发给定函数。普通对象是无反应的。在Meteor中,您可以使用

存储数据

ReactiveVar:https://docs.meteor.com/api/reactive-var.html

ReactiveDict:https://atmospherejs.com/meteor/reactive-dict

(迷你)mongo光标:https://docs.meteor.com/api/collections.html#mongo_cursor

从这些数据存储区访问数据会触发跟踪器的计算。

阅读这些文档应该可以清楚地理解Meteor的反应性概念,并且您应该能够编写反应性模板。