js 中Array.prototype.slice.call(arrary,args)和数组直接调用slice方法有什么区别

javascript中操作数组比如Array.prototype.slice.call(arrary,args)和数组直接调用slice方法有什么区别

阅读 2.5k
2 个回答

args属于类数组对象啊,和document.getElementsByClassName获取到的内容类似,仅拥有数组结构但是不具备数组的原型方法,所以会需要用Array.prototype.slice.call的形式去执行绑定数据的slice方法。

数组直接调用slice方法是 返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。
可以使用Array.prototype.slice.call(arguments)是将类数组(Array-like)对象/集合转换成一个新数组。
或者简化写法为[].slice.call(arguments)
另外,ES6 中新增的 API Array.from 同样也可以将类数组对象转为真正的数组
实际应用中,类数组对象常常是 DOM 操作返回的 NodeList 集合以及函数的 arguments就是一个类数组对象
举例:

let arrayLike = {
  '0': 'a',
  '1': 'b',
  '2': 'c',
  length: 3
}
// es5的写法 
var arr =  Array.prototype.slice.call(arrayLike) // ["a", "b", "c"]
var arr = [].slice.call(arrayLike) // ["a", "b", "c"]
// es6的写法
let arr2 = Array.from(arrayLike) // ["a", "b", "c"]

参考链接 slice

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题