【笔记】js Array.prototype.slice.call(arguments) 将函数的参数转换为数组方法的见解
2017-01-22 12:37
796 查看
我们知道函数里面的参数实际上是一个以数组形式储存的对象 但它并非一个数组
如果我们要将它转换为数组可以调用Array.prototype.slice() 这个方法
分析一下这个方法:
Array.prototype:Array其实一个类名,但是调用类里面的方法只能够通过类的实例对象调用所以这里用了 Array.prototype 通过它自身的原型对象调用
其次是slice():这个是Array类里面的一个方法功能是截取数组里面的某一部分内容,它接收两个参数slice('数组下标起始位置','数组下标结束位置')
call()方法:把某一方法放到另外一个执行环境里面执行,此方法也是有两个参数call('执行环境','为调用的方法传参(可忽略)')
好了再看看实例:
这是高程里面的一个例子:通过一个函数传进一个childNodes的实例对象,然后将这个子元素模型的对象转换成数组
childNodes属性都包含一个NodeList对象,NodeList是一种类数组对象保存一组有序节点,可以通过位置访问这些节点元素
为了兼容ie<9 子类是以COM对象来的我们不能像使用JScript对象那样使用这种对象,所以在catch里面我们通过for遍历childNodes 属性里面的 NodeList对象 并实例化一个array 保存这些遍历出来的节点元素
如果我们要将它转换为数组可以调用Array.prototype.slice() 这个方法
分析一下这个方法:
Array.prototype:Array其实一个类名,但是调用类里面的方法只能够通过类的实例对象调用所以这里用了 Array.prototype 通过它自身的原型对象调用
其次是slice():这个是Array类里面的一个方法功能是截取数组里面的某一部分内容,它接收两个参数slice('数组下标起始位置','数组下标结束位置')
call()方法:把某一方法放到另外一个执行环境里面执行,此方法也是有两个参数call('执行环境','为调用的方法传参(可忽略)')
好了再看看实例:
function convertToArray(nodes){ var arr = null; //兼容ie try{ arr = Array.prototype.slice.call(nodes,0); //因为 slice是 array类的方法 //而传进来的参数是一个 DOM对象的数组 //所以通过call 方法把 array类的方法放到这个对象里面执行 //call 的第二个参数是表示向被调用的方法传进参数 //这里的0 表示从index为0的地方开始 }catch(ex){ arr = new Array(); for (var i = 0; i < nodes.length; i++) { arr.push(nodes[i]); } } return arr; }
这是高程里面的一个例子:通过一个函数传进一个childNodes的实例对象,然后将这个子元素模型的对象转换成数组
childNodes属性都包含一个NodeList对象,NodeList是一种类数组对象保存一组有序节点,可以通过位置访问这些节点元素
为了兼容ie<9 子类是以COM对象来的我们不能像使用JScript对象那样使用这种对象,所以在catch里面我们通过for遍历childNodes 属性里面的 NodeList对象 并实例化一个array 保存这些遍历出来的节点元素
相关文章推荐
- 将函数的实际参数转换成数组的方法,习惯用Array.prototype.slice.call(arguments)
- JS基础篇--函数实际参数转换成数组的方法[].slice.call(arguments)
- Array.prototype.slice.call()详解及转换数组的方法
- Array.prototype.slice.call()详解及转换数组的方法
- Array.prototype.slice.call()详解及转换数组的方法
- Array.prototype.slice.call()详解及转换数组的方法
- Array.prototype.slice.apply(arguments) 将函数参数转化为数组
- 伪数组转为数组 Array.prototype.slice.call(arguments)
- 转对象(含length属性)成数组Array.prototype.slice.call(arguments)
- JS函数arguments数组获得实际传参数个数的实现方法
- Array.prototype.slice.apply(arguments)和[].shift.call(arguments)的使用方法
- JS 有趣的应用 : Array.prototype.slice.call(arguments,0)
- JS 有趣的应用 :Array.prototype.slice.call(arguments,0)
- JS 有趣的应用 : Array.prototype.slice.call(arguments,0)
- Array.prototype.slice.call(arguments) 类数组转成真正的数组
- Array.prototype.slice.call把其他数据类型转换成数组
- Array.prototype.slice.call(arguments,1),类数组转化为数组
- Array.prototype.slice.call()方法详解
- arr=Array.prototype.slice.call(arrLikeObject)类数组对象转数组
- js利用prototype调用Array的slice方法示例