使多个对象都有机会处理请求,从而避免了请求的发送者与多个接收者直接的耦合关系,将这些接收者连接成一条链,顺着这条链传递该请求,直到找到能处理该请求的对象。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<input type="text" id="input">
<button id="button">注册</button>
<script>function checkEmpty() {if (input.value.length === 0) {alert('不能为空');return false;} else {return true;}}function checkLength() {if (input.value.length < 6) {alert('长度不能小于6');return false;} else {return true;}}class Chain{constructor(fn) {this.fn = fn;this.next = null;}setNext(next) {this.next = next;}run() {let result = this.fn.apply(this, arguments);if (result === true && this.next !== null) {return this.next.run.apply(this.next, arguments);}return result;}}let chain1 = new Chain(checkEmpty);let chain2 = new Chain(checkLength);chain1.setNext(chain2);button.onclick = function () {chain1.run();}
</script>
</body>
</html>