javascript中操作数组比如Array.prototype.slice.call(arrary,args)和数组直接调用slice方法有什么区别
javascript中操作数组比如Array.prototype.slice.call(arrary,args)和数组直接调用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"]
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答832 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
8 回答8.6k 阅读
3 回答3.4k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答3.1k 阅读✓ 已解决
2 回答13.7k 阅读✓ 已解决
args属于类数组对象啊,和document.getElementsByClassName获取到的内容类似,仅拥有数组结构但是不具备数组的原型方法,所以会需要用Array.prototype.slice.call的形式去执行绑定数据的slice方法。