笔试题: 写一段js代码表示你会观察者模式
观察者模式: 一个变量值被修改时,可以自动通知所有关注这个变量的对象,自动重新获得这个变量的新值
//定义一个data对象
var data = {
//对象中添加一个变量
money: 0,
//对象中添加一个观察者对象,用于保存观察者
observers: [],
//对象中添加set方法,用于修改变量值
//在修改后,调用对象的noticyAll方法
setMoney(money){
this.money = money,
this.noticyAll()
},
//对象中添加noticyALL方法 用于遍历观察者对象
//并对每个对象调用get方法,用于获取新的变量值
noticyAll(){
this.observers.forEach((obj) => {
obj.getMoney()
})
}
}
//定义一个观察者,自带一个getMoney方法用于获取money
var obj1 = {
money: 500,
getMoney(){
this.money = data.money
}
}
//添加入观察者数组中
data.observers.push(obj1);
data.setMoney(900);
console.log(obj1.money);