日期:2014-05-16  浏览次数:20346 次

javascript面向对象技术基础(二)(转载)

原文:javascript面向对象技术基础(二)

数组
我们已经提到过,对象是无序数据的集合,而数组则是有序数据的集合,数组中的数据(元素)通过索引(从0开始)来访问,数组中的数据可以是任何的数据类 型.数组本身仍旧是对象,但是由于数组的很多特性,通常情况下把数组和对象区别开来分别对待(Throughout this book, objects and arrays are often treated as distinct datatypes.This is a useful and reasonable simplification; you can treat objects and arrays as separate types for most of your JavaScript programming.To fully understand the behavior of objects and arrays, however, you have to know the truth: an array is nothing more than an object with a thin layer of extra functionality. You can see this with the typeof operator: applied to an array value, it returns
the string "object".? --section7.5).
创建数组可以用"[]"操作符,或者是用Array()构造函数来new一个.

Js代码
  1. var ?array1?=?[];?? //创建空数组 ??
  2. var ?array2?=? new ?Array();?? //创建空数组 ??
  3. array1?=?[1,"s" ,[3,4],{ "name1" : "NAME1" }];? // ??
  4. alert(array1[2][1]);??//4???访问数组中的数组元素 ??
  5. alert(array1[3].name1);?//NAME1?访问数组中的对象 ??
  6. alert(array1[8]);???//undefined ??
  7. array2?=?[,,];??//没有数值填入只有逗号,则对应索引处的元素为undefined ??
  8. alert(array2.length);?//3 ??
  9. alert(array2[1]);?????//undefined ??
var array1 = [];  //创建空数组
var array2 = new Array();  //创建空数组
array1 = [1,"s",[3,4],{"name1":"NAME1"}]; //
alert(array1[2][1]);  //4   访问数组中的数组元素
alert(array1[3].name1); //NAME1 访问数组中的对象
alert(array1[8]);   //undefined
array2 = [,,];  //没有数值填入只有逗号,则对应索引处的元素为undefined
alert(array2.length); //3
alert(array2[1]);     //undefined

?用new Array()来创建数组时,可以指定一个默认的大小,其中的值此时为undefined,以后可以再给他们赋值.但是由于javascript中的数组 的长度是可以任意改变的,同时数组中的内容也是可以任意改变的,因此这个初始化的长度实际上对数组没有任何的约束力.对于一个数组,如果对超过它最大长度 的索引赋值,则会改变数组的长度,同时会对没有赋值的索引处赋值undefined,看下面的例子.

Js代码
  1. var ?array?=? new ?Array(10);??
  2. alert(array.length);???//10 ??
  3. alert(array[4]);???????//undefined ??
  4. array[100]?=?"100th" ;?? //这个操作会改变数组的长度,同时将10-99索引对应的值设为undefined ??
  5. alert(array.length);???//101 ??
  6. alert(array[87]);??????//undefined ??
var array = new Array(10);
alert(array.length);   //10
alert(array[4]);       //undefined
array[100] = "100th";  //这个操作会改变数组的长度,同时将10-99索引对应的值设为undefined
alert(array.length);   //101
alert(array[87]);      //undefined

?可以用delete操作符删除数组的元素,注意这个删除仅仅是将数组在该位置的元素设为undefined,数组的长度并没有改变.我们已经使用 过了数组的length属性,length属性是一个可以读/写的属性,也就是说我们可以通过改变数组的length属性来任意的改变数组的长度.如果将 length设为小于数组长度的值,则原数组中索引大于length-1的值都会被删除.如果length的值大于原始数组的长度,则在它们之间的值设为 undefined.