call与类数组

类数组

必须具备条件:

1.属性为索引属性,即数字。

2.必须要有length属性,最好加上push方法 即Array.prototype.push

3.一旦加上splice之后,对象将长得跟数组一样(即中括号)Array.prototype.splice

        *常见的类数组有 1.函数的argument 2.Nodelist(节点集合) 3.HTMLCollection(元素集合)


        *将类数组转换为数组需要借用到call():

        “

        //假设body中有5个div

        //类数组如何转换为正常数组

        //元素类数组转为数组

        var ndLis = document.getElmentByName("div");

var ndArray = Array.prototype.slice.call(ndLis);//此时NDArray为正常数组 

//节点类数组去转为数组

var hLis = document.getElmentByTagName("div");

var HArray = Array.prototype.slice.call(hLis);//此时的HArray为正常数组

  //将argument类数组转换为数组

function agu (){

var aguArray = Array.prototype.slice.call(argument)//此时的argument为正常数组

}

        ”

        *还可以用空数组数组实例通过原型链去调用slice 如:[].slice.call(argument);

        *在IE6~8当中不支持节点集合和元素集合的类数组转为正常数组(需要做兼容)

var hList = document.getElementsByTagName("div");

// console.dir(hList);

var ndList = document.getElementsByName("zhu");

// console.dir(ndList);

var ary = Array.prototype.slice.call(ndList);

console.dir(ary);

你可能感兴趣的:(call与类数组)