console
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
class Observer {
constructor(name, fn) {
this.name = name
this.fn = fn || function () { }
}
}
const njzr = new Observer('年级主任', (state) => {
console.log('因为: ' + state + ' , 你是哪个班的')
})
const bzr = new Observer('班主任', (state) => {
console.log('因为: ' + state + ' , 把你爸找来')
})
const xz = new Observer('校长', (state) => {
console.log('因为: ' + state + ' , 骂你的班主任')
})
class Subject {
constructor(state) {
this.state = state
this.observsers = []
}
setState(val) {
this.state = val
this.observsers.forEach(item => {
item.fn(this.state)
})
}
addObserver(obs) {
this.observsers = this.observsers.filter(item => item !== obs)
this.observsers.push(obs)
}
delObserver(obs) {
this.observsers = this.observsers.filter(item => item !== obs)
}
}
const xiaoming = new Subject('学习')
xiaoming.addObserver(njzr)
xiaoming.addObserver(bzr)
xiaoming.addObserver(xz)
xiaoming.setState("上课打游戏")
const xiaohong = new Subject('学习')
xiaohong.addObserver(bzr)
xiaohong.addObserver(xz)
console.log(xiaoming)
console.log(xiaohong)
</script>
</body>
</html>