zoukankan      html  css  js  c++  java
  • 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  

     用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  

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

    Js代码
    1. var array = new Array("n1","n2","n3","n4","n5");  //五个元素的数组   
    2. var astring = "";   
    3. for(var i=0; i<array.length; i++) {           //循环数组元素   
    4.     astring += array[i];   
    5. }   
    6. alert(astring);       //n1n2n3n4n5   
    7. delete array[3];                   //删除数组元素的值   
    8. alert(array.length + "_" + array[3])  //5_undefined   
    9.   
    10. array.length = 3;    //缩减数组的长度   
    11. alert(array[3]);     //undefined   
    12. array.length = 8;    //扩充数组的长度   
    13. alert(array[4]);     //undefined  

     对于数组的其他方法诸如join/reverse等等,在这就不再一一举例.

    通过上面的解释,我们已经知道,对象的属性值是通过属性的名字(字符串类型)来获取,而数组的元素是通过索
    引(整数型 0~~2**32-1)来得到值.数组本身也是一个对象,所以对象属性的操作也完全适合于数组.

    Js代码
    1. var array = new Array("no1","no2");   
    2. array["po"] = "props1";   
    3. alert(array.length);   //2   
    4. //对于数组来说,array[0]同array["0"]效果是一样的(?不确定,测试时如此)   
    5. alert(array[0] + "_" + array["1"] + "_" + array.po);//no1_no2_props1  
    数组也是对象,所以数组可以有自己的属性,但是属性和值不是一个概念,"no1"和"no2"都是数组的值,而array["po"]是给数组添加了一个属性,其长度当然就没变了。
  • 相关阅读:
    475. Heaters
    69. Sqrt(x)
    83. Remove Duplicates from Sorted List Java solutions
    206. Reverse Linked List java solutions
    100. Same Tree Java Solutions
    1. Two Sum Java Solutions
    9. Palindrome Number Java Solutions
    112. Path Sum Java Solutin
    190. Reverse Bits Java Solutin
    202. Happy Number Java Solutin
  • 原文地址:https://www.cnblogs.com/qixuejia/p/1634681.html
Copyright © 2011-2022 走看看