类数组

类数组:

在js中有一些对象它也拥有length属性,且拥有为非负整数的属性,但是它又不能调用数组的方法,这种对象被称为类数组对象
  • 拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)
  • 不具有数组所具有的方法
  • 需加上Arry.prototype的一些有用属性:
    • 如:"push":"Arry.prototype.push"
    • 如: "splice":"Arry.prototype.splice"

有下面类数组代码:

var larry = {
        "2":"b",
        "3":"c",
        "length":"2",
        "push":Array.prototype.push,
        "splice":Array.prototype.splice
    }
//浏览器命令
larry
//l浏览器输出
Object { 2: "b", 3: "c", length: "2", push: push(), splice: splice() } 
//浏览器命令
larry.push("a")
//l浏览器输出
3
//浏览器命令
larry
//l浏览器输出
Object { 2: "a", 3: "c", length: 3, push: push(), splice: splice() } 
//浏览器命令
larry.push("d")
//l浏览器输出
4
//浏览器命令
larry
//l浏览器输出
Object { 2: "a", 3: "d", length: 4, push: push(), splice: splice() } 
//浏览器命令
larry.push("e")
//l浏览器输出
5
//浏览器命令
larry
//l浏览器输出
Object { 2: "a", 3: "d", 4: "e", length: 5, push: push(), splice: splice() } 
//浏览器命令
larry.push("f")
//l浏览器输出
6
//浏览器命令
larry
//l浏览器输出
Object { 2: "a", 3: "d", 4: "e", 5: "f", length: 6, push: push(), splice: splice() }

上述运算sj原理:

Array.prototype.push = function (target){
  obj[obj.length] = target;
  obj.lenght++;
}

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