笔试题: 写一段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);