比如,当我们触发li对象时,如果li没有阻止冒泡,那么将会传递给ul对象,到了ul,如果没有阻止冒泡,则会传递给div对象(假设这里div为根节点)。同理,ul、div。
看到这儿,很清楚适合用职责链模式,编写这样的需求。
但,怎么使用JavaScript实现职责链模式呢?
如下,我们可以通过原型链的方式构建基本架构:
function CreateDOM(obj){this.next = obj || null;};CreateDOM.prototype = {handle: function(){if(this.next){this.next.handle();}}};每当我们利用CreateDOM构造函数,创建一个对象时,就将与之关联的对象传递进去(嗯,这样很链表)。
var li = null, ul = null, div = null;div = new CreateDOM();div.handle = function(stopBubble){console.log("DIV");if(stopBubble){return;}else{CreateDOM.prototype.handle.call(this);}};ul = new CreateDOM(div);ul.handle = function(stopBubble){console.log("UL");if(stopBubble){return;}else{CreateDOM.prototype.handle.call(this);}};li = new CreateDOM(ul);li.handle = function(stopBubble){console.log("LI");if(stopBubble){return;}else{CreateDOM.prototype.handle.call(this);}};以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。