avaScript是一门弱类型语言,它的数据类型分为两大类:简单数据类型(5种:Undefined、Null、Boolean、Number、String)和复杂数据类型(1种:Object)。Object是ECMAScript中使用最多的一个类型,所有的引用类型的值都是Object类型的实例。引用类型,本质上是一种数据结构,用于将数据和功能组织在一起。对象是某个特定引用类型的实例。
在JavaScript中,有一种特殊的对象,被称为类数组(array-like)对象,其在书中的定义为:
类数组的定义:
- 拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)
- 不具有数组所具有的方法
类数组实例:
var obj = {
"2":"a", //属性2加或不加引号都可以
"3":"b",
"length":2,
"push":Array.prototype.push
}
console.log(obj);
在控制台可以查看打印的结果如下:(实际上类数组就是个对象)
下面来操作一下数组:
首先我们得知道push的原型方法是怎么实现的:
var ary = [1,2,3,4,5,6,7,8];
Array.prototype.push=function () {
for (var i=0;i<arguments.length;i++){
this[this.length]=arguments[i]
}
return this.length;
};
console.log(ary.push(1, 2, 3)); // 输出:11
console.log(ary); // 输出:[1,2,3,4,5,6,7,8,1,2,3]
知道了原型之后,接下来我们对obj进行push操作
var obj = {
"2":"a",
"3":"b",
"length":2,
"push":Array.prototype.push
}
obj.push("c","d");
// Array.prototype.push.call(obj,"c","d");
console.log(obj.length);
console.log(obj);
结果为: