问题描述
Function.prototype.andThen=function(g) { var f=this; return function() { f(); g(); } };function person() {this.name = "aaa";this.callBack = function(){}this.registerFcuntion = function(callBack) {this.callBack = (this.callBack).andThen(callBack);}}var p = new person();p.registerFcuntion(function(){alert(22);});p.callBack();以下这几行代码是我不太明白的地方 请指点 越详细越好 var f=this; return function() { f(); //什么意思? g(); //什么意思? }
解决方案
配合这段来看this.callBack = function(){} //当前的回调this.registerFcuntion = function(callBack) { //注册新的回调this.callBack = (this.callBack).andThen(callBack); (this.callBack).andThen(callBack); 调用如下Function.prototype.andThen=function(g) { var f=this; //this表示当前对象 当前对象是(this.callBack) 所以f是上一个回调 return function() { f(); g(); } }; 因此功能就是:注册新回调时 把以前的放在前面 形成链
解决方案二:
如果我没猜错的话:传入的g是个函数名,然后调用。。。