javascript的prototype实现回调

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






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值