javascript设计模式笔记-17 职责链模式(完结)

简述

  • 职责链是一个对象A向对象B发起请求,如果B不处理,那就转给C,如果C不处理,再转给D,一直到有对象能够处理为止。
  • 这个理解类似转接电话等。
  • 类似DOM中的事件冒泡,及javascript中的prototype链。

例子

这个一个比较难理解的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

function Queue (person) {
this.person = person;
}

Queue.prototype = {
find: function () {
this.person.find();
}
};

var xiaoM = new Queue({
name: '小明',
find: function () {
console.log('我是' + this.name);
}
});

var xiaoH = new Queue(xiaoM);

var xiaoG = new Queue(xiaoH);
xiaoG.name = '小刚';
xiaoG.find = function () {
console.log('我是' + this.name);

// 通过原型链的原理执行上一层find();
Queue.prototype.find.call(this);
};

xiaoG.find();