if (f(this[i],i,this)) return this[i] } }
这样不整个世界都清净了吗.
是的,如果我只是简单的写一个find 这样写肯定没问题,但是如果现在我正在写一个复杂的应用,或一个写一个js框架呢
我要实现一系列的 Array.prototype.all Array.prototype.any Array.prototype.each Array.prototype.map Array.prototype.find Array.prototype.findAll Array.prototype.grep Array.prototype.inject ...... 详细请参见 prototype.js v1.4 有上十种方法等着实现呢,我怎不可能每个方法都用 for循环一个一个的 遍历数组把. 我肯定要实现一个 each 方法作为统一入口吧.
闲话少说,我们来看怎么解决问题: 要在 B函数中终止A函数,并返回结果, 目前我能想到的办法就是用异常 try{}catch(x){}
实现代码 1 <script> 2 // by go_rush(阿舜) @ http://ashun.cnblogs.com 3 4 var $break=new Object() 5 6 Array.prototype.each=function(f){ 7 try{ 8 for(var i=0;i<this.length;i++){ 9 try{ 10 f(this[i],i,this) 11 }catch(e){ 12 if (e==$break) throw e 13 } 14 } 15 }catch(e){ 16 } 17 } 18 19 Array.prototype.find=function(f){ 20 var result; 21 this.each(function(value,index,arr){ 22 if (f(value,index,arr)){ 23  
上一页 [1] [2] [3] [4] 下一页 |