Function.prototype.andThen=function(g) {
var f=this;
return function() {
f();g();
}
};
function Manager() {
this.callback=function () {alert("origin")}; // do nothing
this.registerCallback=function(callbackFunction) {
this.callback=(this.callback).andThen(callbackFunction);
}
}
function sayHi(){
alert("Hi");
}
function sayBye(){
alert("Bye");
}
function sayW(){
alert("W");
}
var manager=new Manager();
manager.registerCallback(sayHi);
manager.registerCallback(sayBye);
manager.registerCallback(sayW);
manager.callback();
模糊中。。。怎么回调的,而且每个函数被注册的都被调用都调了?。
var b = a.add();
undefined
Function.prototype.add = function(){alert("g");return function(){alert("g");}};
function (){alert("g");return function(){alert("g");}}
Function.prototype.add = function(){alert("g");return function(){alert("k");}};
function (){alert("g");return function(){alert("k");}}
a.add().add();
function (){alert("k");}
a.add().add().add();
function (){alert("k");}
a.add().add().add()();
undefined
1、往Function(注意是首字母大写的)对象的prototype中加函数。
2、在那个prototype添加的函数中返回一个新函数,新函数中内容自设。
操作1之后的每个函数(也是对象)都具备那个新建的函数,可以迭代调用,因为每调用一个又返回一个新函数,而可以在前面函数屁股户继续调用,。。。
如此无穷尽也。
而上面的回调也基于此。
因为每次都重新把函数对象赋值,创建后又继续赋值给原来的对象,这样对象内部不会消除,反而一个接一个添加到其中,这主要由于f=this;起到了至关重要的作用。
大概作用原理就像下面这样:
f = f( out ;);
f = f( out;f());
f = f( out;f());
f = f();
输出:out out out