function destroyer(arr) {
var arr1 = Array.prototype.slice.call(arr);
return arr1;
}
destroyer([1, 2, 3, 1, 2, 3], 20, 30);
现在返回的是[1, 2, 3, 1, 2, 3]这个数组。
问题1:应该怎样修改函数(不修改输入值)能让函数返回[[1, 2, 3, 1, 2, 3], 20, 30]这样的数组?
问题2:Array.prototype.slice.call(),这个方法该怎么理解,怎么用?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
问题一:
问题二:
根据 es 标准写的,数组的大部分方法被定义为通用的,也就是可以被类数组对象等调用。
Array.prototype.slice.call就相当于在arguments这个类数组对象上调用数组的slice方法Array.prototype.slice.call()建议你了解一下call怎么用;
就如上例代码我写的
arguments是类数组对象,forEach是数组的方法,用call就相当于,使得arguments能像数组一样用forEach方法。
同样,slice也是如此~
function destroyer(arr) {
var arr1 = Array.prototype.slice.call(arr);
return arr1;
}
destroyer([[1, 2, 3, 1, 2, 3], 20, 30]);
转数组用的
1、
destroyer([[1, 2, 3, 1, 2, 3], 20, 30]);2、
func.call(obj)就是调用func函数(并把obj作为func里的this),你的例子里就相当于[1, 2, 3, 1, 2, 3].slice()你传的相当于是三个参数,数组,20,30.你函数只接收1个参数,怎么可能玩的转嘛