Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
// 被观察者类
class Subject {
  constructor() {
    this.observers = [];  // 存储所有观察者
  }
  // 添加观察者
  addObserver(observer) {
    this.observers.push(observer);
  }
  // 删除观察者
  removeObserver(observer) {
    this.observers = this.observers.filter(o => o !== observer);
  }
  // 通知所有观察者,传递相关数据
  notifyObservers(data) {
    this.observers.forEach(observer => observer.update(data));
  }
}
// 观察者类
class Observer {
  constructor(name) {
    this.name = name;
  }
  // 当被观察者状态变化时调用该方法
  update(data) {
    console.log(`${this.name} 收到更新:${data}`);
  }
}
// 示例使用
const subject = new Subject();
const observer1 = new Observer("观察者1");
const observer2 = new Observer("观察者2");
// 添加观察者
subject.addObserver(observer1);
subject.addObserver(observer2);
// 被观察者状态发生改变,通知所有观察者
subject.notifyObservers("状态 A 已更新");
// 删除其中一个观察者后再次通知
subject.removeObserver(observer1);
subject.notifyObservers("状态 B 已更新");
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers