类数组:
在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++;
}