浏览器中的类数组判断+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

  

原文地址:https://www.cnblogs.com/wangtong111/p/12444870.html