javaScript的對象和數組

來源:互聯網
上載者:User

  在javascript中,數組和對象時2種不同的資料類型,而且它們也是最重要的2種資料類型。

  對象

  1.建立對象

  建立對象的最簡單方法就是在javascript代碼中加入一個對象直接量。對象直接量是用逗號分開的一對對的屬性名稱和值的列表,包含在意個花括弧之中,每個屬性名稱都可以使一個javascript的標識符或一個字串,每個屬性值可以是一個常量或任意的javascript運算式。

        var empty = {};        var point = { x: 0, y: 0 };        var circle = { x: point, y: point.y + 1, radius: 2 };        var home = {            "name": "Homer Simpson",            "age": "34",            "married": true,            "occupation": "plant operator",            'email': "homer@example.com"        };

 

  new運算子可以建立具體的一類對象。在new的後面跟著調用一個建構函式,它用來初始化對象屬性。

        var a = new Array();        var b = new Date();        var r = new RegExp("haha","hehe");

 

  2.對象的屬性

  通常用“.”運算子來儲存物件的屬性的值。位於"."運算子左邊的值是想要訪問其屬性的對象。通常,它只是包含了該對象的引用的變數名,但它可以是任何一個結果對象的javascript運算式。位於“.”右邊的值應該是屬性名稱,它必須是以個標識符,而不能使字串或運算式。

        var book = {};        book.title = "java";        book.chapter1 = new Object();        book.chapter1.title = "c#";        book.chapter1.page = 11;        book.chapter2 = { title: "c++", page: 6 };        //可以通過alert來測試

  可以使用運算子delete來刪除已個對象的屬性

        delete book.chapter2;

  3.作為關聯陣列的對象

  我們已經見過用運算子“.”來取一個對象屬性,而數組更常用的存取屬性運算子是[]。 

        book.chapter2;        book["chapter2"];        //2個運算式的值相等

  在C、C++等強型別語音中,一個對象的屬性石固定的,而且必須預定義這些屬性的名字。由於javascript是一種松類型的語言,它不採取這一規則,所以在用javascript編寫的程式中,可以為對象建立任意數目的屬性。但採用用運算子“.”來取一個對象的屬性時,屬性名稱是用標示符標示的。而在javascript程式中,標示符必須被逐個輸入,它們不是一種資料類型,因此程式不能對它們進行操作。但用數組的[]表示方法來存取一個對象的屬性時,屬性是用字串表示的。所以可以在程式裡面進行操作。

        var a = { a1: 1, a2: 2, a3: 3, a4: 4 };        var b = 0;        for (i = 1; i <= 4; i++) {            b = b+a["a" + i];        }        alert(b);//10

 

   4.通用的object屬性和方法

  沒一個對象都有constructor屬性,它引用了初始化這個對象的建構函式。

        var d = new Date();        //可以用判定對象的類型        if ((typeof d == "object") && (d.constructor == Date)) {            alert("is Date");        }        else {            alert("Not Date");        }

 

  數組

  數組array是一個有序的,值的集合。每一個值叫做一個元素(element),每個元素在數組中都有一個數字化的位置較下標(index)。由於javascript是一種非類型語言,所以一個數組的元素可以具有任意的資料類型,同一個數組的不同元素可以具有不同的類型。

        var empty = [];        //空數組        var a = [2, 3, 4, 5, 6];        var b = [1.1, true, "a"];//元素可以為不同的類型        var base = 1024;        var table = [base, base + 1, base + 2, base = 3]; //數組元素可以使運算式        var c = [[1, { x: 1, y: 2}], [2, { x: 3, y: 4}]]; //數組直接量可以包含對象直接量或者其他的數組直接量

 

   建立數組的另一種方式是使用Array建構函式。

        var a = new Array();        var a = new Array(1, 2, 3, "1", "2");        var a = new Array(10);//指定數組的長度

 

  數組元素的讀寫,數組的第一個下標為0;

        //數組可以通過使用[]方括弧來儲存數組        var a = a[0];        a[1] = 3.14;        i = 2;        a[i] = 3;        a[i + 1] = "hello";        a[a[i]] = a[0];

  前面的已經提到,[]運算子可以用來訪問對象的已命名屬性

        my['a'] = 2;        //因為數組時一種特殊的對象,可以再數組上定義非數位對象屬性,並且使用,或者[]的文法來訪問它

  數組的下標範圍是0 - 2的32次方 的整數,如果數組的下標為負數、浮點數、布爾值、對象及其他值,javascript會直接將它轉換為一個字串,用產生的字串作為對象的屬性名稱字。

  添加數組的新元素

  好像在C# 等語言中,數組時具有固定的元素的,必須在建立時指定數組長度。而在javascript中則不同,它的數組可以具有任意個數的元素,可以再任意時刻改變元素個數。

    //添加元素,直接賦值        a[10] = 10;

 

  在javascript中數組 是稀疏的。這意味著數組的下標不必落在一個連續的數字範圍內,只有那些真正儲存在數組中的元素才能夠有javascript實現分配到記憶體。

        a[0] = 1;        a[10000] = 10000;        //解析器只給數組下標為0和10000的元素分配記憶體,而並不給0到10000之間的那9999個元素分配記憶體

  3.刪除數組元素

  delete運算子把一個數組的元素設定為undefined值,但是元素本身還繼續存在。要真正的刪除一個元素,以使下標位置高於它的所有元素都向下遷移到較低的下標位置,必須使用一個數組的方法.

        var b = [1, 2, 3, 4, 5, 6, 7];        b.shift()//刪除第一個元素        b.pop(); //刪除最後一個元素        b.splice(2,3); //刪除一個區間的元素

  數組的長度

  所有數組無論是由建構函式array()建立的,或者是直接建立的。它們都有一個特殊的屬性length,和常見的對象屬性不同,數組的length屬性石自動更新的。

        var a = new Array(); //a.length=0        a = new Array(10);   //a.length=10        a = new Array(1, 2, 3);   //a.length=3        a = [1, 2];     //a.length=2        a[5] = -1;  //a.length=6        a[49] = 0;  //a.length=50

  多維陣列

  雖然javascript並不支援真正的多維陣列,但是它允許數組的元素為數組的數組,這樣就非常接近多維陣列。要儲存一個數組的元素為數組裡面的元素,只要使用多次[]運算子即可

        var a = [[1, 2], [3, 4], [5, 6]];        alert(a[0][1]);//2

  數組的方法

        //join把一個數組的所有元素都轉為字串        var a = [1, 2, 3, 4, 5, 6];        //alert(a.join()); //join把一個數組的所有元素都轉為字串 輸出為1,2,3,4,5,6        //alert(a.join('&')); //join把一個數組的所有元素都轉為字串,還可以指定分隔字元 輸出為1&2&3&4&5&6        var b = "1,2,3,4,5,6,7";        b.split(',');//split 和 join 相反 是把一個字串,拆分為數組        //alert(b[0]);        //reverse把一個數組元素順序顛倒        a.reverse();         alert(a[0]);        //concat能建立並返回一個數組,這個數組包含了調用concat的原始數組的元素        var c = [1, 2, 3];  //concat能常見        a.concat(4.5)    //returns [1,2,3,4,5]

 

  

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.