【笔记】js Array.prototype.slice.call(arguments) 将函数的参数转换为数组方法的见解
我们知道函数里面的参数实际上是一个以数组形式储存的对象 但它并非一个数组
如果我们要将它转换为数组可以调用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 保存这些遍历出来的节点元素
【笔记】js Array.prototype.slice.call(arguments) 将函数的参数转换为数组方法的见解的更多相关文章
- js Array.prototype.slice.call(arguments,0) 理解
Array.prototype.slice.call(arguments,0) 经常会看到这段代码用来处理函数的参数 网上很多复制粘帖说:Array.prototype.slice.call(argu ...
- js基础进阶--关于Array.prototype.slice.call(arguments) 的思考
欢迎访问我的个人博客:http://www.xiaolongwu.cn Array.prototype.slice.call(arguments)的作用为:强制转化arguments为数组格式,一般出 ...
- 详解 Array.prototype.slice.call(arguments)
首先,slice有两个用法,一个是String.slice,一个是Array.slice,第一个返回的是字符串,第二个返回的是数组 在这里我们看第二个方法 1.在JS里Array是一个类 slice是 ...
- Array.prototype.slice.call(arguments) 类数组转成真正的数组
Array.prototype.slice.call(arguments) 我们知道,Array.prototype.slice.call(arguments)能将具有length属性的对象转成数 ...
- 转对象(含length属性)成数组Array.prototype.slice.call(arguments)
我们知道,Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js ...
- 理解Array.prototype.slice.call(arguments)
在很多时候经常看到Array.prototype.slice.call()方法,比如Array.prototype.slice.call(arguments),下面讲一下其原理: 1.基本讲解 1.在 ...
- javascript:Array.prototype.slice.call(arguments)
我们知道,Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js ...
- 解析 Array.prototype.slice.call(arguments,0)
Array.prototype.slice.call(arguments,0) 经常会看到这段代码用来处理函数的参数 网上很多复制粘帖说:Array.prototype.slice.call(argu ...
- Array.prototype.slice.call(arguments)
Array.prototype.slice.call(arguments)能够将具有length属性的对象转化为数组, 可以理解为将arguments转化成一个数组对象,让它具有slice方法 如: ...
随机推荐
- 微信小程序获取用户信息“授权失败”场景的处理
很多的时候我们在处理小程序功能的时候需要用户获取用户信息,但是呢为了信息安全,用户不授权导致授权失败场景:但是小程序第二次不在启动授权信息弹层,为了用户体验,可以用以下方式处理: function i ...
- H264与AAC ES打包成MP4
注意 设置图像的sps pps MP4AddH264SequenceParameterSet(file,video,sps,sizeof(sps)); MP4AddH264PictureParamet ...
- 使用jsonp形式跨域访问实现电商平台的左侧导航栏
电商平台有个具备的左侧商品类目的导航栏的结构. 通过jsonp跨域访问电商平台的后台管理系统商品分类.(主要实现后台Java代码) 实现基本步骤: 1.在后台管理系统中准备相应的json数据. poj ...
- java网络通信:HTTP协议
熟悉java的同学,都知道javaEE当中很大一部分的内容,是WEB开发,那么在进行WEB开发的学习过程当中,除了需要学习SpringMVC/STRUTS2等框架以外,我们还需要对在WEB开发当中常用 ...
- COCOS2D - JS 之JSON 解析
list 类型的json数据 var source = ["10004","1234","4","3","1 ...
- react native 手势响应
参考地址:https://www.jianshu.com/p/935e5c6a5064 官方文档地址:https://facebook.github.io/react-native/docs/panr ...
- Python3 文件基本修改替换
现有原文件: Somehow, it seems the love I knew was always the most destructive kind 不知为何,我经历的爱情总是最具毁灭性的的那种 ...
- zookeeper,hadoop安装部署其实与防火墙无关
网上查看了很多人关于hadoop,zookeeper的文章,大多都把关闭防火墙作为首要前提,个人觉得这大可不必. 首先你需要知道你部署的是什么东西,它需要哪些端口即可.把相关端口打开就可以了啊.然后把 ...
- Linux命令之nice和renice
(1).nice命令 nice [选项] [命令 [参数]] 在执行程序之前,改变优先级.以调整过的优先级运行命令.如果没有给出命令,就显示当前的优先级.优先级范围从-20到19,越小优先级越高,默认 ...
- UGUI的优点新UI系统二 直观、易于使用
UGUI的优点新UI系统二 直观.易于使用 对于UI控件,开发者可以直接使用鼠标在Scene视图里编辑它们的大小.位置和旋转角度,而无需编写任何代码,以Button为例,如图1-3.图1-4和图1 ...