js框架设计1.3数组化

这一节从作者哪里学来了[].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 }

 

posted @ 2014-06-30 22:32  霏霏雪无声  阅读(207)  评论(0编辑  收藏  举报