javascript物件導向技術基礎(二)

來源:互聯網
上載者:User

數組
我們已經提到過,對象是無序資料的集合,而數組則是有序資料的集合,數組中的資料(元素)通過索引(從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]);   //undefinedarray2 = [,,];  //沒有數值填入只有逗號,則對應索引處的元素為undefinedalert(array2.length); //3alert(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);   //10alert(array[4]);       //undefinedarray[100] = "100th";  //這個操作會改變數組的長度,同時將10-99索引對應的值設為undefinedalert(array.length);   //101alert(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  
var array = new Array("n1","n2","n3","n4","n5");  //五個元素的數組var astring = "";for(var i=0; i<array.length; i++) {           //迴圈數組元素    astring += array[i];}alert(astring);       //n1n2n3n4n5delete array[3];                   //刪除數組元素的值alert(array.length + "_" + array[3])  //5_undefinedarray.length = 3;    //縮減數組的長度alert(array[3]);     //undefinedarray.length = 8;    //擴充數組的長度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"]是給數組添加了一個屬性,其長度當然就沒變了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.