一、数组
1.数组的创建
var arr=[1,2,3,4,5,6,7];
var arr=[2,4,,,6,4,2,2,2,,2];
var arr=new Array(6);//这个数字就是数组的长度,没有元素
var arr=new Array(-6);//报错
var arr=new Array("a");//这是数组只有一个元素
// 一般不用这种创建数组
var arr=new Object([1,2,3,4,5]);
// console.log(arr);
// 数组实际上就是来源对象,脱胎于对象,继承于对象
2.对象与数组的对比
var obj={};//创建对象
obj[0]=1;
obj[1]=2;
obj[2]=3;
var arr=[];//创建数组
arr[0]=1;
arr[1]=2;
arr[2]=3;
console.log(obj,arr);//打印
对象:{0:1,1:2,2:3}
0:1
1:2
2:3
__proto__:Object
数组:(3)[1,2,3]
0:1
1:2
2:3
length:3
__proto__:Array(0)
// 在对象中属性名填入任何内容都会隐式转换为字符
console.log(obj[0]);
console.log(obj["0"]);
// 在数组中所有的下标都会转换为number
console.log(arr[0]);
console.log(arr["0"]);
// 如果不能转换为number的(也就是转换后是NaN的),就会默认添加对象的属性名(把数组当成对象去添加属性)
//arr["a"]里面是字符,arr[a]里面是变量,直接打印会报错(变量a未定义)
var arr=[];
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr["a"]=10;
console.log(arr);//打印
打印结果:(3)[1,2,3,a:10]
0:1
1:2
2:3
a:10
length:3 //长度不发生改变
__proto__:Array(0)
// 数组的长度,仅记录下标的个数,不包含属性数量
var arr=[];
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr["a"]=10;
arr["5"]=20;
console.log(arr);//打印
打印结果:(6)[1,2,3,empty * 2,20,a:10]
0:1
1:2
2:3
5:20
a:10
length:6
__proto__:Array(0)
// 数组不可以使用点语法获取下标变量,但是可以使用点语法取属性
console.log(arr["a"]);可以打印
console.log(arr.a);可以打印
console.log(arr.2);报错