javaScript 回调函数问题

        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是个函数名,然后调用。。。