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 相关文章推荐
火狐下table中创建form导致两个table之间出现空白
Sep 02 Javascript
JS按回车键实现登录的方法
Aug 25 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
Jan 23 Javascript
简介JavaScript中toUpperCase()方法的使用
Jun 06 Javascript
javascript的列表切换【实现代码】
May 03 Javascript
jQuery简单倒计时效果完整示例
Sep 20 Javascript
从零学习node.js之简易的网络爬虫(四)
Feb 22 Javascript
angularjs2中父子组件的数据传递的实例代码
Jul 05 Javascript
使用jQuery实现购物车结算功能
Aug 15 jQuery
浅谈ES6 模板字符串的具体使用方法
Nov 07 Javascript
vue组件jsx语法的具体使用
May 21 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 jQuery
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 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
php简单统计中文个数的方法
2016/09/30 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
PHP实现分布式memcache设置web集群session同步的方法
2018/04/10 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
基于ajax和jsonp的原生封装(实例)
2017/10/16 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
Python FTP操作类代码分享
2014/05/13 Python
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
Python中的localtime()方法使用详解
2015/05/22 Python
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
python实现自动登录
2018/09/17 Python
基于python实现地址和经纬度转换
2020/05/19 Python
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
顶丰TOPPIK台湾官网:增发纤维假发,告别秃发困扰
2018/06/13 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
化妆师职业生涯规划书
2014/02/16 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
农村党建工作汇报材料
2014/10/27 职场文书
讲解MySQL增删改操作
2022/05/06 MySQL
Java异常体系非正常停止和分类
2022/06/14 Java/Android