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 相关文章推荐
在JavaScript中通过URL传递汉字的方法
Apr 09 Javascript
JS获取URL中的参数数据
Dec 05 Javascript
Firefox下无法正常显示年份的解决方法
Sep 04 Javascript
详解Bootstrap创建表单的三种格式(一)
Jan 04 Javascript
js删除Array数组中指定元素的两种方法
Aug 03 Javascript
Bootstrap实现带动画过渡的弹出框
Aug 09 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
May 07 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
Sep 04 jQuery
Vue-Router的使用方法
Sep 05 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
May 10 Javascript
探索JavaScript中私有成员的相关知识
Jun 13 Javascript
js实现鼠标点击飘爱心效果
Aug 19 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 过滤危险html代码
2009/06/29 PHP
PHP中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
JavaScript中数组slice和splice的对比小结
2016/09/22 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
微信小程序实现简易table表格
2020/06/19 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
2020/11/03 Javascript
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
电子商务专业求职信
2014/07/10 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
信用卡工资证明格式
2014/09/13 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers