职责链模式
2017-11-13 18:48 muamaker 阅读(165) 评论(0) 编辑 收藏 举报var Chain = function(fn){ this.fn = fn; this.success = null; this.error = null; this.args = []; } Chain.prototype.addNext = function(fn){ return this.success = fn; } Chain.prototype.reuqest = function(){ this.args = arguments; this.fn.apply(this,arguments); } Chain.prototype.next = function(){ return this.success && this.success.reuqest.apply(this.success,this.args); } var fn1 = new Chain(function(p){ console.log("1",p); this.next(); }); var fn2 = new Chain(function(p){ console.log("2",p); this.next(); }); var fn3 = new Chain(function(p){ console.log("3",p); }); fn1.addNext(fn2).addNext(fn3); fn1.reuqest("参数");
Function.prototype.after = function(fn){ var self = this; return function(){ var that = this; var args = arguments; self.next = function(){ fn.apply(that,args); }; self.apply(self,args); } } function test1(p){ console.log("test1",p); this.next(); } function test2(p){ console.log("test2",p); this.next(); }; function test3(p){ console.log("test3",p); } var order = test1.after(test2).after(test3); order('order');