这一节从作者哪里学来了[].slice.call([],0,1);这个方法第一个参数可是是字符串可以是数组或其他,第2个是数组截取位置的开始位置,第3个是终止位置。
作者说这个方法不兼容旧版本ie的,HTMLCollection、NodeList不是Object的子类 所以在最后写了一个mass framework里面的方法,具体的代码如下。
当然在我们日常用的jq当中,我可以调用makeArray()的方法,就算没有数组也要返回空数组。
插入jq的 makeArray()方法先
var makeArray = function(){ var ret=[]; if(array!=null){ var i=array.length; if(i==null||typeof array ===‘string‘||jQuery.isFunction(array)||array.setInterval)
ret[0]=array; else
while(i) ret[--i]=array[i] } }
再说mass的区分,一开始就实现w3c方自己的方法和IE手动区分
1 $.slice = window.dispatchEvent? function(nodes,start,end){ 2 return [].slice.call(nodes,start,end) 3 }:function(nodes,start,end){ 4 var ret=[],n=nodes.length; 5 if(end===void 0 ||typeof end===‘number‘ && isFinite(end)){ 6 start =parseInt(start,10) || 0; 7 if(start<0)start+=n; 8 if(end>n)end=n; 9 if(end<0)end+=n; 10 for(var i=start;i<end;i++) ret[i-start]=nodes[i]; 11 } 12 return ret; 13 }
原文:http://www.cnblogs.com/ffjiang/p/3817398.html