javascript Array.prototype.slice的使用示例


Posted in Javascript onNovember 14, 2013

经常的,可以看到Array.prototype.slice(arguments, 0); 这个写法可以用于function() {} 内,这样可以将函数的参数列表转换成一个真正的数组。请看一个例子:

var slice = Array.prototype.slice;
var toString = Object.prototype.toString;
(function() {
  var args = arguments;
  console.log(args, toString.call(args)); // [1, 2, 3] "[object Arguments]" 
  var argsArr = slice(args, 0);
  console.log(argsArr, toString.call(argsArr)); // [1, 2, 3] "[object Array]" 
}(1,2,3))

我们可以看到函数的参数列表arguments通过slice调用以后,一秒钟变Array了。
同样的,也可以将选中的DOM元素转换成数组:
slice.call(document.querySelectorAll("div"));

顺藤摸瓜,我们想想,slide方法是否可以将对象转换成数组呢?请看例子:
console.log(slice.call('string')); // ["s", "t", "r", "i", "n", "g"] 
console.log(slice.call(new String('string'))); // ["s", "t", "r", "i", "n", "g"]

每次,字符串会直接被转换成了一个数组。
但是,数字,布尔值的会转换成一个空的数组:
console.log(slice.call(33)); 
console.log(slice.call(true));

普通的对象也会被转换成空数组,除非你给它加上一个length属性:
console.log(slice.call({name: 'obj'})); // []
console.log(slice.call({0: 'zero', 1: 'one'})); // []
console.log(slice.call({0: 'zero', 1: 'one', name: 'obj', length: 2}));  // ["zero", "one"]

还有,它还可以用来clone数组:
var srcArr = [1,2,3];
var newArr = srcArr.slice(0);
console.log(srcArr, newArr);    // [1,2,3] [1,2,3]
console.log(srcArr == newArr);  // false
Javascript 相关文章推荐
基于JQuery的列表拖动排序实现代码
Oct 01 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
Mar 02 Javascript
在JavaScript中访问字符串的子串
Jul 07 Javascript
JS简单设置下拉选择框默认值的方法
Aug 20 Javascript
es6 字符串String的扩展(实例讲解)
Aug 03 Javascript
JS+CSS实现网页加载中的动画效果
Oct 27 Javascript
浅谈对于react-thunk中间件的简单理解
May 01 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
May 09 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
Dec 06 Javascript
js实现div色块拖动录制
Jan 16 Javascript
详解JS预解析原理
Jun 16 Javascript
微信小程序实现通讯录列表展开收起
Nov 18 Javascript
js取消单选按钮选中示例代码
Nov 14 #Javascript
js实现目录定位正文示例
Nov 14 #Javascript
通过action传过来的值在option获取进行验证的方法
Nov 14 #Javascript
javascript间隔刷新的简单实例
Nov 14 #Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
Nov 14 #Javascript
js中prototype用法详细介绍
Nov 14 #Javascript
JavaScript图片放大技术(放大镜)实现代码分享
Nov 14 #Javascript
You might like
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
jquery简单体验
2007/01/10 Javascript
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
ES6中Promise的使用方法实例总结
2020/02/18 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
深入理解Javascript中的this关键字
2015/03/27 Python
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
django框架两个使用模板实例
2019/12/11 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
python中使用np.delete()的实例方法
2021/02/01 Python
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
汉语专业应届生求职信
2013/10/01 职场文书
班长岗位职责
2013/11/10 职场文书
电话销售经理岗位职责
2013/12/07 职场文书
安全生产汇报材料
2014/02/17 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
工作检讨书怎么写
2015/01/23 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP