伪数组,就是像数组一样有 length
属性,也有 0、1、2、3
等属性的对象,看起来就像数组一样,但不是数组。
伪数组特点:
1.拥有 length 属性。但是其length属性不会像真正的数组一样随着元素的添加删除自动更新
2.可以遍历伪数组,但是不具备数组的方法
var fakeArray = {
"0": "first",
"1": "second",
"2": "third",
length: 3
};
delete fakeArray["2"]; //fakeArray中的length不会发生更新
for (var i = 0; i < fakeArray.length; i++) {
console.log(fakeArray[i]);
}
// 此时fakeArray虽然具备length属性,但是不能直接调用数组的方法
// 伪数组存在的意义,是可以让普通的对象也能正常使用数组的很多算法,比如:
Array.prototype.join.call(fakeArray,'+');
Array.prototype.push.call(fakeArray, 'd')
//上面代码的含义:当前的fakeArray对象没有join方法,但是Array.prototype中有,可以将Array.prototype.join中的this改为当前的fakeArray,然后用”+”号进行拼接