1、监听某个变量的值,当这个变量的值变化时,触发某个方法
oberver.js
//观察者
class Observers {
constructor(name) {
this.name = name;
}
update(target_value){
console.log(this.name + ':a的值改变了,当前值为:' + target_value)
}
}
exports = module.exports = Observers
target.js
//被观察者
class Target{
constructor() {
this.a = 0
this.observers = []
}
add(o){
this.observers.push(o)
}
change(value){
if(value !== 0) {
this.a = value
this.observers.forEach(o => {
o.update(this.a)
})
}
}
}
exports = module.exports = Target
test.js
const Target = require('./target')
const Observers = require('./observers')
const target = new Target();
const observer1 = new Observers('观察者1')
const observer2 = new Observers('观察者2')
target.add(observer1)
target.add(observer2)
target.change(8)
target.change(4)
/**
output:
观察者1:a的值改变了,当前值为:8
观察者2:a的值改变了,当前值为:8
观察者1:a的值改变了,当前值为:4
观察者2:a的值改变了,当前值为:4
*/