通过Arrary.prototype.slice.call浅谈类数组
来源:互联网 发布:最牛不要钱淘宝刷粉丝 编辑:程序博客网 时间:2024/06/14 07:50
首先我们要明白slice是什么
在js中 arrary是一个类,slice是类的一个方法 从字面意思就知道是截取的意思,具体含义
var a = [1,2,3,4,5,6,7] a.slice(1,3); //[2, 3] a.slice(4) //[5, 6, 7]
从这个简单的数组操作可以知道 slice 就是从已有的数组中返回指定的元素,但是本身没有改变数组的值,,其包含两个参数
ArraryObject.slice(start,end)
start 必需的 从什么地方开始截取,如果是负数那么就是从后面开始计算
end 可选的 什么时候截取,如果是负数也是从尾部开始计算
这个方法我们了解了,还有call 这个讲起来就多了,所以请看另一篇文章
当你看到现在的时候估计你也明白上面的Arrary.prototype.slice.call的大概意思了 把调用的方法截取出来,,对了顺便说一句 Arrary.prototype.slice.call
function arg(a,b,c){ var arr = Array.prototype.slice.call(arguments , 1) console.log(arr); } arg('a','b','c'); function arrays(a,b,c){ var arrays = [].slice.call(arguments,1) console.log(arrays) } arrays('a','b','c');
说了这么多的 ‘废话’ 终于进入正题了 arguments 其实不是一个数组,他只不过是和数组类似而已,而且不能够使用数组中的方法,那么我们就可以这么理解
Arrary.prototype.slice.call 就是将类数组转化为数组
顺便多说一句 Arrary.prototype.slice.call 能够将具有length属性的对象转化为数组
var a = {length : 2,0 : '1',1:'2'}Array.prototype.slice.call(a)var b = {0 : '1',1:'2'}Array.prototype.slice.call(b)
F12自己看一下就明白了 。。
对了忘说一句 call(arguments ,1) 和 call(arguments,0) 区别就是 slice的方法中参数不同的区别
那么说到这里算是说完了 ,其实在js中有很多种方法可以将对象转化为数组的,只是很多方法简单而且很高大上而已
一 就是上面提到的 Array.prototype.slice.call(arguments)
二 [].slice.call
var arr = [];for(var i = 0 ; i < ObjectArr.length ; i++){arr.push(ObjectArr[i])}
终极方案 拿去不谢
var toArrary = function(Obj){ try{ return Array.prototype.slice.call(Obj); }catch{ var arr = []; for(var i = 0 ; i < Obj.length ; i++){ arr[i] = Obj[i]; // arr.push(Obj[i]); } return arr; } }
阅读全文
0 0
- 通过Arrary.prototype.slice.call浅谈类数组
- 浅谈javascript的Array.prototype.slice.call
- 浅谈javascript的Array.prototype.slice.call
- Array.prototype.slice.call
- Array.prototype.slice.call
- Array.prototype.slice.call
- Array.prototype.slice.call
- prototype.slice.call()
- Array.prototype.slice.call
- Array.prototype.slice.call
- JS类数组转数组(Array.prototype.slice.call(arrayLike,0))
- Array.prototype.slice.call()详解及转换数组的方法
- Array.prototype.slice.call()详解及转换数组的方法
- Array.prototype.slice.call()详解及转换数组的方法
- 什么是Array.prototype.slice.call
- Array.prototype.slice.call(arguments)
- Array.prototype.slice.call(arguments)
- Array.prototype.slice.call(arguments)
- Git详解之四 服务器上的Git
- thinkphp二维数组插入数据库
- Java_基础—LinkedList的特有功能
- ItemDecoration解析(三) 实现stickyHeader效果
- Mac中启动另一个程序并将窗口置于最前面
- 通过Arrary.prototype.slice.call浅谈类数组
- java 构造方法
- 驱动模块(driver) 和桩模块(stub)
- CF831A-Unimodal Array
- php上传图片
- DisallowMultipleComponent
- 如何在ViewPager中的各个Fragment间传递数据并刷新Fragment界面?
- 我们为什么要使用AOP?
- hiho-1014 Trie树 (Trie的建树与查询)