博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【笔记】js Array.prototype.slice.call(arguments) 将函数的参数转换为数组方法的见解...
阅读量:5051 次
发布时间:2019-06-12

本文共 1192 字,大约阅读时间需要 3 分钟。

 我们知道函数里面的参数实际上是一个以数组形式储存的对象 但它并非一个数组

 如果我们要将它转换为数组可以调用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 保存这些遍历出来的节点元素

转载于:https://www.cnblogs.com/stitchgogo/p/6339952.html

你可能感兴趣的文章
日常报错
查看>>
list-style-type -- 定义列表样式
查看>>
mysql-1045(28000)错误
查看>>
Ubuntu 编译出现 ISO C++ 2011 不支持的解决办法
查看>>
Linux 常用命令——cat, tac, nl, more, less, head, tail, od
查看>>
VueJS ElementUI el-table 的 formatter 和 scope template 不能同时存在
查看>>
Halcon一日一练:图像拼接技术
查看>>
iOS设计模式 - 中介者
查看>>
centos jdk 下载
查看>>
HDU 1028 Ignatius and the Princess III(母函数)
查看>>
(转)面向对象最核心的机制——动态绑定(多态)
查看>>
token简单的使用流程。
查看>>
django创建项目流程
查看>>
Vue 框架-01- 入门篇 图文教程
查看>>
多变量微积分笔记24——空间线积分
查看>>
poi操作oracle数据库导出excel文件
查看>>
(转)Intent的基本使用方法总结
查看>>
Windows Phone开发(24):启动器与选择器之发送短信
查看>>
JS截取字符串常用方法
查看>>
Google非官方的Text To Speech和Speech Recognition的API
查看>>