因为arguments本身并不能调用数组方法,它是一个另外一种对象类型,只不过属性从0开始排,依次为0,1,2...最后还有callee和length属性。我们也把这样的对象称为类数组。
function test () {
console.log(arguments)
console.log(arguments.push(1))
}
test(1, 'zxx', {a: 3}, ['a', 2, {name: 'zxx', age: 18}])
常见的类数组还有:
方法一:Array.prototype.slice.call()
function test () {
let args = Array.prototype.slice.call(arguments)
console.log(args)
args.unshift(3)
console.log(args)
}
test(1, 'zxx', {a: 3}, ['a', 2, {name: 'zxx', age: 18}])
方法二:Array.from()
function test () {
let args = Array.from(arguments)
console.log(args)
args.unshift(3)
console.log(args)
}
test(1, 'zxx', {a: 3}, ['a', 2, {name: 'zxx', age: 18}])
方法三:ES的扩展运算符...
function test () {
let args = [...arguments]
console.log(args)
args.unshift(3)
console.log(args)
}
test(1, 'zxx', {a: 3}, ['a', 2, {name: 'zxx', age: 18}])
方法四:利用concat+apply
function test () {
let args = Array.prototype.concat.apply([], arguments)
console.log(args)
args.unshift(3)
console.log(args)
}
test(1, 'zxx', {a: 3}, ['a', 2, {name: 'zxx', age: 18}])
尚硅谷_基于阿里云搭建数据仓库(离线)
链接:https://pan.baidu.com/s/1dmQyM0JMtk-GYM9OnAeuCQ
提取码:vitu