浏览器中的类数组判断+push实现方法的原理
一,类数组:
当你在对象中定义某些属性的时候,浏览器会自动帮你转化为类数组,
即控制台中devTools猜测对象为类数组;
当然跟数组还是有区别的,区别就在于你只能使用类数组中定义的方法和属性,而不能使用数组中的原生方法
类数组在浏览器中的判定条件为:
1,对象拥有length属性,且为整数;
2,对象拥有继承自Array.prototype的splice函数
如下:obj3
结果:
二、push
上面的结果有一点特殊的地方,就是案例obj,
第一次打印的时候,是一个正常对象,而第二次打印就变成了类数组,且在添加了一个key值为'0'的属性,故而得出结论
当调用没有length值的对象中的push时,会自动生成length: 0 属性,且将参数设为key值为'0'的value值;
而push函数的内部处理方式是什么呢?
猜测为:
1,添加下标为length的值,
2,length属性+1,
注意:如果length不存在或者不能被转化为一个数值,那么默认length值为0