什么是伪数组?
故名思意,长得像数组,但是没有数组的方法,也叫类数组。
- 具有length属性;
- 按照索引方式存储数据;
- 不能调用数组的push,pop等方法
比如在
document.getElementsByTagname
、document.getElementsByClassName
、document.childNodes
、document.querySelectorAll
、argument
存在这种数组
如何转换成真数组?
- 1、原型的方式
Array.prototype.slice.call(arr)
或者
[].slice.call(arguments)
- 2、数组遍历
var args = [];
for (var i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
}
3、Ayyary.form
Array.from({
0:"hello",
1:12,
2:2013,
3:"大学",
length:4
});
//["hello", 12, 2013, "大学"]
4、运算符解构
[...arguments]
5、用原型继承`
arguments.__proto__ = Array.prototype