Javascript伪数组与arguments
什么是伪数组?
所谓伪数组,也称为类数组对象,指的是可以通过索引属性访问元素
并且拥有 length 属性
的对象
。
以下为一个简单的伪数组的例子:
1 |
|
它所对应的数组如下所示:
1 |
|
它们的相同点:
1 |
|
它们的不同点在于,伪数组不能调用数组原型链上的方法,且伪数组调用Array.isArray
方法输出false
:
1 |
|
我们可以用Array.from将伪数组转化为真正的数组
1 |
|
也可以使用
1.Array.prototype.slice等返回新数组的方法
2.扩展运算符[…arguments]
js中的伪数组对象:
document.getElementsByTagName
获取的元素标签集合- 函数中的
arguments
arguments
定义如下函数:
1 |
|
注意!箭头函数没有 arguments
在控制台显示打印结果:
显然,arguments
就是一个伪数组,callee
属性如上图所示,为函数本身,我们可以使用arguments.callee()
的方式调用函数。
再思考一下以下代码:
1 |
|
其中function
本身的length
代表行参的长度,而arguments
的length
代表实参的长度。
注意!function本身的length不包括有默认值的形参和剩余参数…args
arguments的应用
实现函数的重载1
2
3
4
5
6
7
8
9
10function doAdd() {
if (arguments.length == 1) {
console.log(arguments[0] + 5);
} else if (arguments.length == 2) {
console.log(arguments[0] + arguments[1]);
}
}
doAdd(1) // 6
doAdd(1, 2) // 3
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!