Javascript类数组

Javascript类数组

一.什么是类数组?

  1. 可以利用属性名模拟数组的特性
var obj = {
      "0":'a',
      "1":'b',
      "2":'c',
      "length":3,
      "push":Array.prototype.push,//引入数组的push功能
      "splice":Array.prototype.splice
}
  • 可以动态的增长length属性
    执行obj.push('d');
    //obj对象就会引入一个属性"3":'d',且length变为4
  • 如果再加上"splice":Array.prototype.splice属性,此对象会以数组的形式显现,但仍然是对象。
  1. 类数组定义:属性要为索引(数字)属性,必须有length属性,最好加上push方法,是对象,且可以当数组一样用。
  2. 类数组的关键点在于length,push内部原理为:
Array.prototype.push = function (target){
        obj[obj.length] = target;
        obj.length ++;
}
  1. 如果强行让类数组调用push方法,则会根据length属性值的位置进行属性的扩充。
    例1:
var obj = {
      "2":"a",
      "3":"b",
      "length":2,
      "push":Array.prototype.push
}
obj.push('c');
obj.push('d');

此时,根据上述工作原理
obj = {
"2":"c",
"3":"d",
"length":4
}

你可能感兴趣的:(Javascript类数组)